Scraping API
Help center

Search Google

Run a Google search with type serp and get organic results, the local pack, people also ask and related searches as JSON, Markdown or HTML.

type: serp runs one Google search and returns the parsed results page. Use POST /task for one query and wait for the answer, or POST /job for a batch.

Minimal request

Shell
curl https://scraping-api.datafuel.ai/api/v1/task \
  --request POST \
  --header "Content-Type: application/json" \
  --header "X-API-Key: df_key_your_key_here" \
  --header "Idempotency-Key: serp-crm-us-2026-09-28" \
  --data '{
    "type": "serp",
    "attributes": {
      "query": "best crm for startups",
      "country": "us",
      "language": "en"
    }
  }'

The call blocks until the search is done. Set your client timeout to at least 120 seconds.

Target the results

AttributeGoogle parameterExample
queryqbest crm for startups, operators like site: work
countryglus, gb, fr
languagehlen, en-gb, es-419
pagestart2 for results 11 to 20
google_domainhostgoogle.co.uk
location, uule, lat + lonuulePick one. radius (meters, max 1000) needs one of them.

Filters pass through as Google names them: tbs (dates, news), safe (active or off), cr and lr (limit to countries or languages), nfpr, filter, and uds (take it from filters[].uds of an earlier result).

proxy_type, proxy_country and the other proxy fields are ignored. Searches exit through DataFuel’s own pool, so country and language are how you pick the market.

Choose the output

result_formatresult.data is
json (default)An object: organic, places (local pack), local_map, knowledge_graph (business panel: address, phone, hours, rating, review sources), inline_videos, inline_images (image pack: title, source, page link, image URL), questions (people also ask), related_searches, filters, plus total_results and showing_results_for when Google shows them. Sections missing from the page are left out.
markdownThe same results as Markdown, ready for an LLM.
htmlThe page Google served.
JSON
{
  "status": "completed",
  "credits_used": 50,
  "result": {
    "data": {
      "query": "best crm for startups",
      "page": 1,
      "organic": [
        {
          "position": 1,
          "title": "The 10 best CRM tools for startups",
          "url": "https://example.com/best-crm",
          "snippet": "We tested 25 CRMs…"
        }
      ],
      "related_searches": [{ "query": "free crm for startups" }]
    }
  }
}

Many queries

A job takes queries instead of query, at least two. Every other attribute applies to each query, and each query is its own task.

JSON
{
  "type": "serp",
  "multithreaded": true,
  "attributes": {
    "queries": ["best crm for startups", "project management software"],
    "country": "us",
    "language": "en"
  }
}

Poll and fetch it like any job: see Scrape a list of URLs.

Cost

50 credits per query, whatever the format. A search that fails is refunded. See Pricing and credits.