Skip to content

API documentation

One endpoint, plain HTTPS and JSON. Base URL: https://api.scraperdata.com

Quick start

  1. Create a free account and copy your API key from the dashboard.
  2. Send a GET request to the search endpoint with your query.
  3. Read the JSON response. Check your usage any time in the dashboard.
cURL
curl -G "https://api.scraperdata.com/v1/search" \
  -H "X-API-Key: YOUR_API_KEY" \
  --data-urlencode "q=coffee shops" \
  -d gl=us -d hl=en

Authentication

Every request needs your API key. Send it in the X-API-Key header (recommended), as Authorization: Bearer YOUR_API_KEY, or as the api_key query parameter.

Keep your key secret and call the API from your server, not from browser code. If a key leaks, create a new one on the API key page of your dashboard; the old key stops working at once.

Parameters

NameRequiredDescriptionExample
qYesThe search query.coffee shops
glNoCountry to search from, as a two-letter code.us
hlNoLanguage of the results page.en
locationNoCity or region to search from.Austin, Texas
numNoNumber of results per page.10
pageNoResults page, starting at 1.2
deviceNodesktop, mobile or tablet.mobile
api_keyNoYour API key, if you do not send it in a header.sd_...

Response

A successful search returns status 200 and a JSON object. The main list is organic_results; each item has a position, title, link and snippet.

200 OK
{
  "search_parameters": { "engine": "google", "q": "coffee shops", "gl": "us", "hl": "en" },
  "search_information": { "total_results": 3270000, "time_taken_displayed": 0.42 },
  "organic_results": [
    {
      "position": 1,
      "title": "The 10 Best Coffee Shops in Town",
      "link": "https://www.example.com/best-coffee-shops",
      "displayed_link": "www.example.com › best-coffee-shops",
      "snippet": "Our guide to the best coffee shops, with opening hours and reviews."
    },
    {
      "position": 2,
      "title": "Coffee Shops Near You: Map and Reviews",
      "link": "https://maps.example.org/coffee-shops",
      "displayed_link": "maps.example.org › coffee-shops",
      "snippet": "Find coffee shops near you and compare ratings."
    }
  ],
  "related_searches": [{ "query": "coffee shops near me" }, { "query": "best coffee beans" }]
}

Every successful response also carries these headers:

  • X-Searches-Used and X-Searches-Left: your usage in the current monthly period.
  • X-Searches-Limit: searches included in your plan.
  • X-Plan: your current plan.

Errors

Errors use normal HTTP status codes and a JSON body with a stable code and a readable message. Requests that fail are never charged.

429 Too Many Requests
{
  "error": {
    "code": "quota_exceeded",
    "message": "You have used all 250 searches of your Free plan for this period."
  },
  "charged": false
}
StatusCodeMeaning
400missing_query, invalid_requestThe q parameter is missing or a parameter was rejected.
401missing_api_key, invalid_api_keyNo API key was sent, or the key is wrong.
403account_disabledThe account is disabled. Contact support.
429hourly_limit_reachedToo many requests in this hour for your plan.
429concurrency_limit_reachedToo many requests at the same time for your plan.
429quota_exceededAll searches of this monthly period are used.
502upstream_error, upstream_unavailableThe search failed on our side. Retry in a moment.
504upstream_timeoutThe search took too long. Retry in a moment.

Limits

Each plan has three limits. You can see yours on the Billing page.

  • Searches per month. Successful searches in the current monthly period. The period renews on the day your plan started.
  • Concurrent requests. How many requests can run at the same time. Extra requests get 429 with concurrency_limit_reached.
  • Requests per hour. A safety limit per clock hour. When it is reached, the Retry-After header says how many seconds to wait.

Account endpoint

GET https://api.scraperdata.com/v1/account returns your plan and usage. It does not use a search.

200 OK
{
  "plan": { "id": "developer", "name": "Developer" },
  "searches_per_month": 15000,
  "searches_used": 1240,
  "searches_left": 13760,
  "period_start": "2026-10-01T09:30:00+00:00",
  "period_end": "2026-11-01T09:30:00+00:00",
  "concurrency": 5,
  "requests_per_hour": 3000
}