Skip to main content
RapidDev - Software Development Agency
bolt-ai-integrationsBolt Chat + API Route

How to Integrate Bolt.new with Serpstat

Integrate Serpstat with Bolt.new using its REST API through a Next.js API route that keeps your token server-side. Fetch keyword search volumes, difficulty scores, SERP competitor data, and domain analytics for any keyword or URL. Serpstat's API uses simple token authentication over HTTPS — all calls work from Bolt's WebContainer preview. Build keyword research dashboards, competitor analysis tools, and SEO reporting portals at a fraction of Ahrefs or SEMrush API pricing.

What you'll learn

  • How to get a Serpstat API token and configure it in Bolt's .env file
  • How to fetch keyword data (search volume, difficulty, CPC) via an API route
  • How to build a keyword research dashboard showing top keywords for any domain
  • How to analyze SERP competitors for a target keyword using Serpstat's API
  • How to use Serpstat's domain analysis endpoint to research competitor keyword footprints
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate16 min read20 minutesSEOApril 2026RapidDev Engineering Team
TL;DR

Integrate Serpstat with Bolt.new using its REST API through a Next.js API route that keeps your token server-side. Fetch keyword search volumes, difficulty scores, SERP competitor data, and domain analytics for any keyword or URL. Serpstat's API uses simple token authentication over HTTPS — all calls work from Bolt's WebContainer preview. Build keyword research dashboards, competitor analysis tools, and SEO reporting portals at a fraction of Ahrefs or SEMrush API pricing.

Build Affordable Keyword Research Tools in Your Bolt.new App with Serpstat

Serpstat sits in a valuable middle ground in the SEO data market: it provides comprehensive keyword research, SERP analysis, and competitor intelligence at API pricing that's significantly more accessible than Ahrefs or SEMrush. For indie developers, agencies with tighter budgets, and SaaS tools that need SEO data as a feature rather than the core product, Serpstat offers a practical path to rich keyword data without the enterprise price tag.

The Serpstat API covers four main data categories that power most SEO use cases. Keyword data returns search volume, keyword difficulty (KD — a 0-100 scale predicting how hard it is to rank), cost-per-click (CPC for paid search estimates), competition level, and SERP features for any keyword. Domain keyword data shows which keywords a specific domain ranks for, making it essential for competitor research — you can see the entire organic keyword footprint of any competitor. SERP analysis returns the current top-10 results for any keyword, including each result's URL, title, and Serpstat's own authority metrics. Backlink data provides link counts and referring domain metrics for any URL.

All Serpstat API endpoints are standard HTTPS REST calls with a simple API token authentication model — the token is passed as a query parameter or header on every request. No OAuth flows, no token expiry, no refresh logic. This simplicity makes Serpstat one of the easiest SEO APIs to integrate, and since all calls are outbound HTTPS requests, the entire integration can be built and tested in Bolt's WebContainer preview without any deployment required.

Integration method

Bolt Chat + API Route

Serpstat integrates with Bolt.new through a Next.js API route that authenticates using a Serpstat API token in the request parameters or headers. All Serpstat API calls are standard HTTPS requests that work from Bolt's WebContainer preview without any deployment required. The API supports keyword data, domain analytics, SERP competitor research, and backlink metrics — all accessible through the same token. Serpstat has no webhooks, so no deployed URL is needed.

Prerequisites

  • A Serpstat account at serpstat.com (paid plan required for API access — the free trial includes limited API credits)
  • Serpstat API token from your account settings (serpstat.com → Profile → API)
  • A Bolt.new project with Next.js for API routes
  • Optional: Supabase for caching Serpstat API results to reduce API credit consumption

Step-by-step guide

1

Get Your Serpstat API Token

Serpstat API access requires a paid plan — the free Serpstat account does not include API credits. If you have a Serpstat subscription, log in to your account at serpstat.com. Navigate to your profile settings: click your account name or avatar in the top right, then go to 'Profile' or 'Account Settings'. Find the 'API' section — some Serpstat interfaces show it as a direct menu item. Your API token is a long alphanumeric string. Copy it. The API token authenticates all your Serpstat API requests. It's a single static token (no OAuth, no expiry under normal circumstances) that you include in every API request as a `token` query parameter. Serpstat's API base URL is `https://api.serpstat.com/v4/`. The v4 API supports JSON request bodies and returns JSON responses. Each API call consumes API credits from your Serpstat subscription. Different endpoints consume different credit amounts — keyword data for a single keyword typically consumes fewer credits than domain analysis returning many keywords. Your remaining credit balance is shown in your Serpstat account dashboard and is also returned in API responses as a field you can track programmatically. Store your API token in Bolt's `.env` file as a server-side-only variable — never expose it in client-side code where users could extract it from browser DevTools and consume your API credits.

.env
1# .env Serpstat API credentials
2# Found in serpstat.com Profile API
3SERPSTAT_API_TOKEN=your-serpstat-api-token
4
5# Serpstat v4 API base URL
6SERPSTAT_API_BASE=https://api.serpstat.com/v4
7
8# Default search engine database (se = search engine)
9# Use 'g_us' for Google US, 'g_uk' for Google UK, etc.
10SERPSTAT_DEFAULT_SE=g_us
11
12# For Next.js server-side: process.env.SERPSTAT_API_TOKEN
13# NEVER use NEXT_PUBLIC_ prefix this is a server-side credential only

Pro tip: Serpstat API credits are shared across your account. To avoid unexpected credit depletion during development, implement response caching in Supabase — cache keyword results for at least 24 hours since search volume and difficulty data changes slowly.

Expected result: You have your Serpstat API token stored in .env. Verify it works by calling the Serpstat API manually from your API route with a simple keyword like 'seo tools'.

2

Create the Keyword Data API Route

The Serpstat keyword data endpoint is the foundation of most SEO tools you'll build. It returns comprehensive metrics for any keyword in any supported search engine: monthly search volume, keyword difficulty (KD, a 0-100 scale where 100 is hardest), CPC in USD, competition level (0-1 scale based on advertiser competition), and the number of SERP results. The Serpstat v4 API uses POST requests with a JSON body specifying the method (which API function to call), the keyword, the search engine database (e.g., 'g_us' for Google US), and your API token. The method for keyword data is `SerpstatKeyword.getKeywordsInfo`. Build an API route that accepts a keyword (or array of keywords) from your frontend, calls the Serpstat API, and returns the cleaned metric data. Include error handling for missing keywords, invalid tokens, and API credit exhaustion. The response from Serpstat's API includes a `status_code` field (200 for success), a `data` object with the keyword metrics, and `left_lines` showing your remaining API credit balance. Log the remaining balance in development to track usage. Since all calls are standard HTTPS requests to Serpstat's API, they work perfectly from Bolt's WebContainer preview — build and test the keyword research feature in the preview without deploying.

Bolt.new Prompt

Create a Serpstat keyword data API route at app/api/serpstat/keyword-data/route.ts. Accept POST requests with keyword (string) and optional se (search engine, default 'g_us'). Call the Serpstat v4 API method SerpstatKeyword.getKeywordsInfo with the SERPSTAT_API_TOKEN. Return: search_volume, keyword_difficulty, cpc, competition, results_count, and left_credits from the response. Handle errors: invalid token (401), no data found (empty result), and API credit exhaustion.

Paste this in Bolt.new chat

app/api/serpstat/keyword-data/route.ts
1// app/api/serpstat/keyword-data/route.ts
2import { NextResponse } from 'next/server';
3
4const SERPSTAT_API_BASE = process.env.SERPSTAT_API_BASE ?? 'https://api.serpstat.com/v4';
5
6export async function POST(request: Request) {
7 const token = process.env.SERPSTAT_API_TOKEN;
8 if (!token) {
9 return NextResponse.json({ error: 'SERPSTAT_API_TOKEN not configured' }, { status: 500 });
10 }
11
12 const { keyword, se = process.env.SERPSTAT_DEFAULT_SE ?? 'g_us' } = await request.json();
13
14 if (!keyword) {
15 return NextResponse.json({ error: 'keyword is required' }, { status: 400 });
16 }
17
18 const serpstatResponse = await fetch(`${SERPSTAT_API_BASE}/?token=${token}`, {
19 method: 'POST',
20 headers: { 'Content-Type': 'application/json' },
21 body: JSON.stringify({
22 id: '1',
23 method: 'SerpstatKeyword.getKeywordsInfo',
24 params: {
25 se,
26 keywords: [keyword],
27 },
28 }),
29 });
30
31 if (!serpstatResponse.ok) {
32 return NextResponse.json(
33 { error: `Serpstat API error: ${serpstatResponse.status}` },
34 { status: serpstatResponse.status }
35 );
36 }
37
38 const data = await serpstatResponse.json();
39
40 if (data.error) {
41 return NextResponse.json(
42 { error: data.error.message ?? 'Serpstat API error' },
43 { status: 400 }
44 );
45 }
46
47 const keywordData = data.result?.data?.[keyword];
48
49 if (!keywordData) {
50 return NextResponse.json({
51 keyword,
52 found: false,
53 message: 'No data found for this keyword in the selected search engine',
54 });
55 }
56
57 return NextResponse.json({
58 keyword,
59 found: true,
60 search_volume: keywordData.volume ?? 0,
61 keyword_difficulty: keywordData.difficulty ?? 0,
62 cpc: keywordData.cpc ?? 0,
63 competition: keywordData.competition ?? 0,
64 results_count: keywordData.results ?? 0,
65 left_credits: data.result?.summary?.left_lines ?? null,
66 });
67}

Pro tip: Serpstat's keyword difficulty (KD) uses a 0-100 scale similar to Ahrefs. For content strategy, keywords under KD 30 are generally accessible for new sites, 30-60 requires moderate domain authority, and above 60 is competitive territory needing strong link profiles.

Expected result: POST to /api/serpstat/keyword-data with { keyword: 'bolt new tutorial' } returns search volume, keyword difficulty, CPC, and competition data. left_credits in the response shows your remaining API balance.

3

Add Domain Keyword Analysis for Competitor Research

Serpstat's domain keyword endpoints reveal the complete organic keyword footprint of any website — which keywords they rank for, at what positions, and what traffic they receive from each keyword. This is one of the most valuable features for competitive research: understanding what keywords drive your competitors' organic traffic and identifying opportunities where they rank that you don't. The Serpstat method `SerpstatDomain.getKeywords` accepts a domain (without protocol), a search engine database, and pagination parameters. It returns an array of keyword objects, each with the keyword, the domain's ranking position, monthly search volume, keyword difficulty, CPC, and Serpstat's estimated traffic contribution. Build an API route for domain keyword analysis that accepts a domain and returns the top keywords sorted by traffic. Implement pagination support since competitors may rank for thousands of keywords — start with the first 20-50 by traffic for overview dashboards, and add pagination for deep-dive analysis. Cache the results in Supabase since a domain's keyword rankings don't change dramatically hour-to-hour — a 6-hour or 24-hour cache TTL reduces credit consumption significantly while keeping data reasonably fresh for research purposes.

Bolt.new Prompt

Create a domain keyword analysis API route at app/api/serpstat/domain-keywords/route.ts. Accept POST requests with domain (string, without https://), optional se (default 'g_us'), optional limit (default 20), and optional minPosition (default 10, to filter for top-10 rankings). Call Serpstat's SerpstatDomain.getKeywords method. Return the top keywords sorted by estimated traffic descending, each with: keyword, position, search_volume, keyword_difficulty, cpc, and traffic_estimate. Cache results in Supabase for 6 hours keyed by domain+se.

Paste this in Bolt.new chat

app/api/serpstat/domain-keywords/route.ts
1// app/api/serpstat/domain-keywords/route.ts
2import { NextResponse } from 'next/server';
3import { createClient } from '@supabase/supabase-js';
4
5const SERPSTAT_API_BASE = process.env.SERPSTAT_API_BASE ?? 'https://api.serpstat.com/v4';
6
7function cleanDomain(input: string): string {
8 return input
9 .replace(/^https?:\/\//i, '')
10 .replace(/^www\./i, '')
11 .replace(/\/.*$/, '')
12 .trim();
13}
14
15export async function POST(request: Request) {
16 const token = process.env.SERPSTAT_API_TOKEN;
17 if (!token) {
18 return NextResponse.json({ error: 'SERPSTAT_API_TOKEN not configured' }, { status: 500 });
19 }
20
21 const { domain, se = 'g_us', limit = 20, minPosition = 10 } = await request.json();
22
23 if (!domain) {
24 return NextResponse.json({ error: 'domain is required' }, { status: 400 });
25 }
26
27 const cleanedDomain = cleanDomain(domain);
28 const cacheKey = `${cleanedDomain}:${se}`;
29
30 const supabase = createClient(
31 process.env.NEXT_PUBLIC_SUPABASE_URL!,
32 process.env.SUPABASE_SERVICE_ROLE_KEY!
33 );
34
35 // Check 6-hour cache
36 const sixHoursAgo = new Date(Date.now() - 6 * 60 * 60 * 1000).toISOString();
37 const { data: cached } = await supabase
38 .from('serpstat_domain_cache')
39 .select('keywords_data, cached_at')
40 .eq('cache_key', cacheKey)
41 .gt('cached_at', sixHoursAgo)
42 .single();
43
44 if (cached) {
45 const keywords = cached.keywords_data as Array<Record<string, unknown>>;
46 return NextResponse.json({
47 domain: cleanedDomain,
48 keywords: keywords.filter((k) => (k.position as number) <= minPosition).slice(0, limit),
49 cached: true,
50 });
51 }
52
53 const serpstatResponse = await fetch(`${SERPSTAT_API_BASE}/?token=${token}`, {
54 method: 'POST',
55 headers: { 'Content-Type': 'application/json' },
56 body: JSON.stringify({
57 id: '1',
58 method: 'SerpstatDomain.getKeywords',
59 params: {
60 se,
61 domain: cleanedDomain,
62 sort: { traffic: 'desc' },
63 page: 1,
64 size: 100, // fetch more, filter client-side
65 },
66 }),
67 });
68
69 const data = await serpstatResponse.json();
70
71 if (data.error) {
72 return NextResponse.json({ error: data.error.message }, { status: 400 });
73 }
74
75 const keywords = (data.result?.data ?? []).map((item: {
76 keyword: string;
77 position: number;
78 volume: number;
79 difficulty: number;
80 cpc: number;
81 traff: number;
82 }) => ({
83 keyword: item.keyword,
84 position: item.position,
85 search_volume: item.volume ?? 0,
86 keyword_difficulty: item.difficulty ?? 0,
87 cpc: item.cpc ?? 0,
88 traffic_estimate: item.traff ?? 0,
89 }));
90
91 // Cache results
92 await supabase
93 .from('serpstat_domain_cache')
94 .upsert({
95 cache_key: cacheKey,
96 domain: cleanedDomain,
97 se,
98 keywords_data: keywords,
99 cached_at: new Date().toISOString(),
100 }, { onConflict: 'cache_key' });
101
102 const filtered = keywords
103 .filter((k: { position: number }) => k.position <= minPosition)
104 .slice(0, limit);
105
106 return NextResponse.json({
107 domain: cleanedDomain,
108 keywords: filtered,
109 total_found: keywords.length,
110 cached: false,
111 });
112}

Pro tip: Create the serpstat_domain_cache table in Supabase with: cache_key (text, primary key), domain (text), se (text), keywords_data (jsonb), cached_at (timestamptz). This single table handles all domain analysis caching.

Expected result: POST to /api/serpstat/domain-keywords with { domain: 'competitor.com' } returns the competitor's top keywords by traffic, with positions, volumes, and difficulty scores.

4

Build a SERP Competitor Analysis Feature

The SERP analysis endpoint returns the current top-10 organic search results for any keyword — who ranks there, with what URLs, and Serpstat's authority metrics for each result. This is powerful for two use cases: understanding what type of content Google rewards for a target keyword (blog post vs product page vs comparison article), and identifying which sites consistently appear for multiple keywords in your research, signaling strong competitors in your niche. The Serpstat method for SERP data is `SerpstatKeyword.getSerpResults`. It returns an array of ranking pages, each with the URL, title, domain, estimated organic traffic, and Serpstat's own domain analytics metrics. Build a SERP analysis component that shows the top results as cards, highlights any URLs from a target domain (for rank tracking), and groups results by content type using simple heuristics (URLs containing 'blog/', 'guide/', 'review' suggest informational content; '/product/', '/shop/', '/buy' suggest commercial intent). This feature requires the same API route authentication pattern as the keyword data endpoint — all Serpstat calls are outbound HTTPS requests that work from the WebContainer. The SERP results are particularly valuable when combined with keyword difficulty scores: a low-KD keyword with top results from weak domains signals an easy ranking opportunity.

Bolt.new Prompt

Create a SERP analysis API route at app/api/serpstat/serp/route.ts that accepts a keyword and optional target_domain. Call Serpstat's SerpstatKeyword.getSerpResults method and return the top 10 results with: position, url, title, domain, domain_authority (serpstat's metric), and is_target (boolean, true if the URL belongs to target_domain). Build a SerpResults component that displays results as a numbered list, highlighting the target domain's result in green if found. Show 'Not in top 10' if target domain doesn't appear.

Paste this in Bolt.new chat

app/api/serpstat/serp/route.ts
1// app/api/serpstat/serp/route.ts
2import { NextResponse } from 'next/server';
3
4const SERPSTAT_API_BASE = process.env.SERPSTAT_API_BASE ?? 'https://api.serpstat.com/v4';
5
6export async function POST(request: Request) {
7 const token = process.env.SERPSTAT_API_TOKEN;
8 if (!token) {
9 return NextResponse.json({ error: 'SERPSTAT_API_TOKEN not configured' }, { status: 500 });
10 }
11
12 const {
13 keyword,
14 se = 'g_us',
15 target_domain = '',
16 } = await request.json();
17
18 if (!keyword) {
19 return NextResponse.json({ error: 'keyword is required' }, { status: 400 });
20 }
21
22 const serpstatResponse = await fetch(`${SERPSTAT_API_BASE}/?token=${token}`, {
23 method: 'POST',
24 headers: { 'Content-Type': 'application/json' },
25 body: JSON.stringify({
26 id: '1',
27 method: 'SerpstatKeyword.getSerpResults',
28 params: { se, keyword },
29 }),
30 });
31
32 const data = await serpstatResponse.json();
33
34 if (data.error) {
35 return NextResponse.json({ error: data.error.message }, { status: 400 });
36 }
37
38 const cleanedTarget = target_domain
39 .replace(/^https?:\/\//i, '')
40 .replace(/^www\./i, '')
41 .replace(/\/.*$/, '')
42 .toLowerCase();
43
44 const results = (data.result?.data ?? []).map((item: {
45 position: number;
46 url: string;
47 title: string;
48 domain: string;
49 domain_rank: number;
50 traff: number;
51 }) => ({
52 position: item.position,
53 url: item.url,
54 title: item.title ?? '',
55 domain: item.domain,
56 domain_authority: item.domain_rank ?? 0,
57 traffic_estimate: item.traff ?? 0,
58 is_target: cleanedTarget
59 ? item.domain.toLowerCase().includes(cleanedTarget)
60 : false,
61 }));
62
63 const targetPosition = results.find((r: { is_target: boolean }) => r.is_target)?.position ?? null;
64
65 return NextResponse.json({
66 keyword,
67 se,
68 results,
69 target_position: targetPosition,
70 target_found: targetPosition !== null,
71 });
72}

Pro tip: Combine SERP analysis with keyword difficulty for a quick opportunity score: a keyword with KD under 40 where the top 3 results have domain authority under 30 is a strong ranking opportunity for new content.

Expected result: POST to /api/serpstat/serp with { keyword: 'best seo tools', target_domain: 'mysite.com' } returns the top 10 SERP results with domain authority scores and highlights whether your domain appears.

Common use cases

Keyword Research Dashboard

Build an internal tool where your team can enter any keyword and see instant data: search volume, keyword difficulty, CPC, top competing pages, and related keyword suggestions. Saves time compared to manually checking each keyword in Serpstat's interface.

Bolt.new Prompt

Create a keyword research dashboard at /keyword-research. Add a keyword input and search button. On submit, call /api/serpstat/keyword-data with the keyword and return: monthly search volume, keyword difficulty score (0-100), CPC estimate, competition level, and the top 10 SERP results with their URLs and titles. Display results with color coding (red for KD 70+, yellow for 40-70, green for under 40). Also show 5 related keyword suggestions.

Copy this prompt to try it in Bolt.new

Competitor Keyword Gap Analysis

Find keywords your competitor ranks for that you don't. Enter a competitor's domain to see their top organic keywords by traffic, then identify which ones you should target. A classic SEO content strategy research tool.

Bolt.new Prompt

Build a competitor keyword analysis page. Accept a competitor domain URL (e.g., competitor.com). Call /api/serpstat/domain-keywords with the domain and return the top 20 keywords by organic traffic where the domain ranks in positions 1-10. Show each keyword with: position, monthly search volume, keyword difficulty, and traffic estimate. Sort by traffic descending. Add a 'KD under 50' filter to surface low-difficulty opportunities.

Copy this prompt to try it in Bolt.new

SERP Tracking and Reporting Tool

Build a keyword position tracking report for your clients. For a list of tracked keywords, pull the current SERP top-10 results from Serpstat and show whether your client's domain appears and at what position. Export to CSV for client reports.

Bolt.new Prompt

Create a SERP tracking report page. Accept a list of keywords (one per line) and a target domain. For each keyword, call the Serpstat SERP analysis API and check if the target domain appears in the top 10 results. Return a table showing: keyword, current position (or 'Not ranking'), search volume, and the top 3 competitor URLs. Add an 'Export to CSV' button that downloads the full report.

Copy this prompt to try it in Bolt.new

Troubleshooting

Serpstat API returns error code -32600 or 'Invalid request'

Cause: The JSON-RPC request body format is incorrect — Serpstat uses JSON-RPC 2.0 format with id, method, and params fields. Missing the method or params fields causes this error.

Solution: Verify your request body matches the JSON-RPC format exactly: { id: '1', method: 'SerpstatKeyword.getKeywordsInfo', params: { se: 'g_us', keywords: ['your keyword'] } }. The id field is required (any string works). Check that the method name matches exactly — Serpstat method names are case-sensitive.

typescript
1// Correct JSON-RPC request format for Serpstat
2body: JSON.stringify({
3 id: '1', // Required - any string ID
4 method: 'SerpstatKeyword.getKeywordsInfo', // Exact method name
5 params: {
6 se: 'g_us',
7 keywords: [keyword], // Array, not a single string
8 },
9})

Serpstat API returns error 'Token is not valid' or 401

Cause: The API token is incorrect, the token has been reset in the Serpstat account, or the token is being passed incorrectly in the request URL.

Solution: Verify SERPSTAT_API_TOKEN in your .env matches the token shown in serpstat.com → Profile → API. The token must be passed as a URL query parameter: `?token=your-token` appended to the API base URL. Check for extra spaces or newlines in the token value.

typescript
1// Token goes in the URL query string, not in the request body
2const url = `${SERPSTAT_API_BASE}/?token=${process.env.SERPSTAT_API_TOKEN}`;
3const response = await fetch(url, { method: 'POST', body: JSON.stringify(payload) });

Keyword data returns empty result or null for a common keyword

Cause: The keyword or search engine database combination has no data in Serpstat's index. Serpstat's database coverage varies by country and language — some long-tail keywords in specific regional databases may return no results.

Solution: Try the keyword with the 'g_us' database first (Google US has the most comprehensive coverage). For keywords in other countries, use the appropriate database code: 'g_uk' for UK, 'g_de' for Germany, etc. Very new or extremely niche keywords may not be indexed in Serpstat.

Best practices

  • Cache all Serpstat API responses in Supabase — keyword data changes slowly (monthly at most), so a 24-hour cache dramatically reduces API credit consumption
  • Never expose SERPSTAT_API_TOKEN in client-side code — all Serpstat calls must go through server-side API routes to protect your credit balance
  • Normalize domain inputs before sending to the domain keywords endpoint — strip https://, www., and trailing slashes for consistent results
  • Use Serpstat's batch keyword endpoint (passing multiple keywords in one request) rather than individual calls when researching keyword lists
  • Monitor your remaining API credits (returned as left_lines in responses) and add logging to track usage — unexpected credit depletion can disable your tool
  • Use appropriate search engine database codes for your target market — g_us for US Google, g_uk for UK Google, y_us for Bing, etc.
  • Combine keyword difficulty with SERP analysis: check both the KD score and the actual domain authorities of top results before assessing ranking difficulty

Alternatives

Frequently asked questions

How do I get a Serpstat API token?

Log in to your Serpstat account at serpstat.com and navigate to your Profile or Account Settings. Look for the 'API' section — your API token is shown there as a long alphanumeric string. Note that API access requires a paid Serpstat subscription; the free trial includes limited API credits but the token is immediately available after signing up.

Can I call the Serpstat API from Bolt's WebContainer preview without deploying?

Yes. Serpstat's API is a standard HTTPS REST API — all calls are outbound from your API route to Serpstat's servers. Bolt's WebContainer supports outbound HTTPS requests, so you can build and test the full Serpstat integration in the preview. Serpstat has no webhooks or incoming connections, so deployment is not required at all for this integration.

How does Serpstat compare to SEMrush and Ahrefs for a Bolt.new integration?

Serpstat, SEMrush, and Ahrefs all provide keyword and competitor data but differ significantly in price, data depth, and API structure. Serpstat's API is the most affordable of the three and uses simple token auth with JSON-RPC — straightforward to integrate. SEMrush and Ahrefs offer more data and better accuracy but at higher API costs. Choose Serpstat when budget is a constraint and keyword difficulty + SERP data meets your needs.

What search engine databases does Serpstat support?

Serpstat supports Google databases for 230+ countries and Bing for US. Common database codes: 'g_us' (Google US), 'g_uk' (Google UK), 'g_de' (Google Germany), 'g_fr' (Google France), 'g_br' (Google Brazil), 'g_ru' (Google Russia), 'y_us' (Bing US). The full list is in Serpstat's API documentation. Specify the se parameter in your API calls to target the correct country database.

How does Serpstat's JSON-RPC format work?

Serpstat v4 uses JSON-RPC 2.0 format for all requests — you POST to the same URL endpoint (?token=your-token) but specify which API method to call in the request body as { id: '1', method: 'MethodName', params: { ... } }. The id field is required but can be any string. The method field determines which data you're requesting (e.g., SerpstatKeyword.getKeywordsInfo, SerpstatDomain.getKeywords). This is different from typical REST APIs where the method is determined by the URL path.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.