Pricing & credits
serp.cheap bills in credits. You pre-purchase credits (or subscribe to a monthly plan) and each search debits your balance.
Cost per search
Section titled “Cost per search”| Result | Credits | Why |
|---|---|---|
| Fresh fetch | 6 | A live fetch of Google through a residential proxy. |
| Cache hit | 3 | The same query was fetched recently and served from cache. |
The maximum cost is reserved up front and the difference is refunded once the actual cost is known — so you’re never overcharged for a cache hit.
Every response carries a stats object (unless your key hides it):
"stats": { "balance": 9994, "cost": 6, "cached": false }cost— credits charged for this search.cached— whether the result came from cache.balance— your remaining credit balance.
How results get cached, and how to force a fresh fetch per request, is covered in Caching & freshness.
Scraping page content
Section titled “Scraping page content”Add a scrape option to a search (or call POST /v1/scrape for a single URL) to pull the actual
page content — extracted to markdown — for each organic result. Pages are fetched through datacenter
proxies; only pages scraped successfully are billed, on top of the search.
| Mode | Credits / page | What you get |
|---|---|---|
| Content (HTTP) | 1 | Markdown + text of the page, no JavaScript. |
| Content + render JS | 3 | Headless-browser render first, for JS-heavy sites. |
| + Screenshot | +1 | 1920×1080 (or custom, ≤1920) screenshot as a 48h presigned URL (forces a browser render → 4 total). |
{ "q": "best running shoes", "scrape": { "render_js": true, "top_n": 5, "screenshot": true } }Each enriched organic result then carries content, optionally screenshot_url, or scrape_error
when a page couldn’t be fetched (not billed). JS-ready detection waits for the DOM to load plus a short
settle, with optional wait_for (CSS selector) and wait_ms escape hatches for slower pages.
SEO Rank
Section titled “SEO Rank”POST /v1/rank finds where a site or page ranks for a keyword. It scans pages 1..N of Google
(pages, 1-10) and reports the absolute rank of the best match. Each scanned page is billed exactly
like a search — fresh 6 / cache 3 — using the same hot cache, so repeated checks of a popular
keyword cost mostly cache hits.
| Field | Credits / page | Notes |
|---|---|---|
| SEO Rank | 6 fresh · 3 cache | Billed per page scanned. A 10-page (top-100) check costs at most 60 credits, less as pages hit cache. |
{ "url": "example.com", "q": "best running shoes", "pages": 10, "match_type": "domain" }match_type is domain (any result on the registrable domain, incl. subdomains/paths) or exact
(the identical URL). The response carries found, rank (absolute, 1-based), every matches[]
position, and partial/pages_failed if a page couldn’t be fetched. The same tool is exposed over
MCP as seo_rank.
Plans & rate
Section titled “Plans & rate”$/1k is the effective price per 1,000 fresh searches. Monthly plans lower the per-search price and
raise your rate limit.
| Tier | $ / 1k | Rate limit | Monthly | Included |
|---|---|---|---|---|
| Free | $0.00 | 1 req/s | on signup | 100 searches |
| Pay as you go | $0.75 | 10 req/s | — | credits valid 12 months |
| Basic | $0.70 | 20 req/s | $35 | 50k searches / mo |
| Medium | $0.65 | 40 req/s | $130 | 200k searches / mo |
| Max | $0.60 | 60 req/s | $300 | 500k searches / mo |
| Enterprise | custom | custom | $3,000+/mo | contact us |
Buy $500+ in credits and you automatically pay $0.60 / 1k — no subscription needed.