No KYC — no ID, no selfie, no documents. Pay in crypto: BTC, USDT, USDC, ETH, SOL, LTC
Language: English
Get an API key

Docs · Quick start · API v1

SERP API quick start: your first search in curl, Python and Node.js

One HTTPS endpoint, one API key, one credit per successful search. This page takes you from an empty account to a parsed Google results page, then points to the reference for everything else.

Last updated: · 7 min read

Quick answer

How do I make my first SERP API request with SerpCrypto?

Buy a credit pack, copy the API key from your dashboard and send GET https://serpcrypto.com/api/v1/search?q=your+query with the header Authorization: Bearer YOUR_KEY. SerpCrypto answers with the results page as JSON and charges 1 credit only when the search succeeds. 10,000 searches cost $7.50, paid in crypto with no KYC, and credits never expire.

The API at a glance

Base URLhttps://serpcrypto.com/api/v1
SearchGET https://serpcrypto.com/api/v1/search
CreditsGET https://serpcrypto.com/api/v1/credits (free)
AuthenticationAn API key in the Authorization header (Bearer) or in the api_key query parameter
EnginesGoogle Search, Google News, Google Images, Google Maps (local results), Google Shopping and Bing
Billing1 credit = 1 successful search request, which returns one page of results on any supported engine. A request that fails is not charged
Credit expiryPrepaid search credits never expire: unused searches stay on your account until you use them
FormatJSON over HTTPS, UTF-8

How do I get an API key?

Four steps. No ID, no selfie, no documents, and no email unless you want one.

  1. Open an account

    Account-number login; email is optional. Save the account number in a password manager: it is your login.

  2. Top up in crypto

    Send at least $25 in BTC, USDT, USDC, ETH, SOL, LTC. The balance is credited after the network confirmations listed on the payment page.

  3. Buy a credit pack

    10,000 searches for $7.50 is enough to test every engine. Larger packs bring the rate down to $0.30/1K searches. See pricing.

  4. Copy your key

    Your API key appears in your dashboard as soon as you buy a credit pack from your confirmed crypto balance. Keep it in an environment variable named SERPCRYPTO_API_KEY, never in a code repository.

How do I run my first search with curl?

Export the key once, then send one GET request. The -G flag with --data-urlencode builds the query string and encodes spaces and accents for you. The answer is a single JSON document, and jq keeps it readable in a terminal.

The example asks Google, the default engine, for US results in English. Change q, gl or hl and run it again: each successful run uses one credit.

curl + jq: the first three organic results
export SERPCRYPTO_API_KEY="paste-your-key-here"

curl -sG "https://serpcrypto.com/api/v1/search" \
  -H "Authorization: Bearer $SERPCRYPTO_API_KEY" \
  --data-urlencode "q=best espresso grinder" \
  -d gl=us -d hl=en | jq '.organic_results[:3]'

How do I run the same search in Python?

Use any HTTP client. With requests, pass the parameters as a dictionary and the key in the header. raise_for_status() turns an error answer, such as 401 for a wrong key, into an exception you can catch.

Python 3.9+ with requests
import os

import requests

API_URL = "https://serpcrypto.com/api/v1/search"
API_KEY = os.environ["SERPCRYPTO_API_KEY"]

response = requests.get(
    API_URL,
    params={"q": "best espresso grinder", "gl": "us", "hl": "en"},
    headers={"Authorization": f"Bearer {API_KEY}"},
    timeout=60,
)
response.raise_for_status()
data = response.json()

print("credits used:", data["search_metadata"]["credits_used"])
for result in data.get("organic_results", [])[:3]:
    print(result["position"], result["title"], result["link"])

And in Node.js?

Node.js 18 and later ship fetch, so no package is needed. Save the file with the .mjs extension to use await at the top level, then run node first-search.mjs.

Node.js 18+ with the built-in fetch
// first-search.mjs (Node.js 18 or later: fetch and top-level await are built in)
const API_URL = "https://serpcrypto.com/api/v1/search";
const params = new URLSearchParams({ q: "best espresso grinder", gl: "us", hl: "en" });

const response = await fetch(`${API_URL}?${params}`, {
  headers: { Authorization: `Bearer ${process.env.SERPCRYPTO_API_KEY}` },
});
if (!response.ok) {
  throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
const data = await response.json();

console.log("credits used:", data.search_metadata.credits_used);
for (const result of (data.organic_results ?? []).slice(0, 3)) {
  console.log(result.position, result.title, result.link);
}

How do I check how many credits I have left?

Call GET https://serpcrypto.com/api/v1/credits with the same key. It is free and returns three numbers: credits left, credits used today and how many searches your account may run at the same time. Each account can run a set number of searches at the same time; the limit is shown in your dashboard and raised on request.

Read your credits
curl -s "https://serpcrypto.com/api/v1/credits" -H "Authorization: Bearer $SERPCRYPTO_API_KEY"
Answer (example values)
{
  "credits_remaining": 84210,
  "credits_used_today": 1290,
  "concurrency_limit": 10
}

Every answer has the same frame on all engines. search_metadata says whether the search succeeded and how many credits it used. search_parameters repeats the settings that were applied, defaults included. Then come one array or object per block of the results page, such as organic_results or people_also_ask.

A block is present only when the page shows it, so read it with a default value. The response format page describes every block and field.

Shape of a Google answer (shortened, illustrative values)
{
  "search_metadata": { "id": "srch_7f3a9c2e41b8", "status": "success", "engine": "google", "credits_used": 1 },
  "search_parameters": { "engine": "google", "q": "best espresso grinder", "gl": "us", "hl": "en", "page": 1 },
  "search_information": { "total_results": 18600000, "query_displayed": "best espresso grinder" },
  "organic_results": [ { "position": 1, "title": "…", "link": "https://www.example.com/…", "snippet": "…" } ],
  "people_also_ask": [ { "question": "…", "snippet": "…", "link": "https://www.example.org/…" } ],
  "related_searches": [ { "query": "best espresso grinder under 300" } ],
  "pagination": { "current": 1, "next_page": 2 }
}

Which parameters will I use first?

The full list, with defaults and allowed values, is in the API reference.

ParameterExampleWhat it does
qbest espresso grinderThe query, as a person would type it. Required.
enginegoogle_newsWhich engine and vertical to search. Default google.
gldeCountry of the results, two letters. Default us.
hldeLanguage of the interface. Default en.
locationAustin, Texas, United StatesA city-level place for local results.
devicemobiledesktop (default) or mobile results.
page2Results page, 1 to 10. Each page is one credit.

What does a search cost, and when is it free?

1 credit = 1 successful search request, which returns one page of results on any supported engine. A request that fails is not charged. About 10 organic results per page, as Google has served since it stopped honouring num=100 in September 2025; each extra page is one more credit. A request rejected for a bad parameter, a wrong key, an empty balance or a busy account is free as well, and so is every call to the credits endpoint.

Prices run from $7.50 for 10,000 searches to $0.30/1K searches on the largest pack, as of October 2026. Prepaid search credits never expire: unused searches stay on your account until you use them. The errors page lists each error code and the right way to retry.

Where do I go next?

Quick start questions

Is there an official SerpCrypto SDK?

No. The docs give copy-paste code for Python, Node.js and curl that calls the HTTPS endpoint directly, so there is no package to install or keep up to date. Any language with an HTTP client works the same way: one GET request, one header, one JSON answer.

Can I put the API key in the URL?

Yes. api_key=YOUR_KEY works as a query parameter, which helps for a quick test in a browser. In code, prefer the Authorization: Bearer header: URLs end up in logs, browser history and shared screenshots more often than headers do.

Do I need KYC or a credit card?

No. SerpCrypto asks for no ID, no selfie, no documents and no card. Account-number login; email is optional. You pay in BTC, USDT, USDC, ETH, SOL, LTC from a $25 minimum top-up.

How do I test before buying a large pack?

No free tier: test with the smallest pack, paid from the minimum top-up; the part added only to reach the minimum is refundable on request within 30 days, in USDT or USDC, if unspent. The smallest pack runs on the same endpoint and engines as the largest one, so a test with it tells you what production will look like.

From $0.30/1K searches · no KYC

Get an API key