Google SERP API — Search Results as JSON
Documentation menu
FetchLayer FetchLayer API

Search Google web results

Google web search results for a query, as a searcher in a given country, language, city and on desktop or mobile, with everything Google shows around them. organicResults holds the organic results in rank order: position (1-based across the pages read, and across a cursor continuation), the page and its place on that page, title, destination URL and domain, the address line Google prints, the site name, snippet, the date as displayed, extensions such as "30+ comments · 1 year ago", and sitelinks. Around them, when Google shows them: the answer box (weather, unit conversions, featured snippets), the People also ask questions, related searches, top stories, videos and short videos, discussions, local business results with rating, review count and price level, the knowledge panel, and ads — which come back in ads and never take an organic position. A query Google finds nothing for is a 200 with noResults: true, not an error. Filter by time range and safe search. One result page is read by default; pages reads up to 10 in one request, page starts later (1–15), and nextCursor continues, sent with the same query and options. Google shows between 6 and 10 organic results a page and ignores a requested count, so limit only trims what the pages held. Results reflect a US, English, desktop searcher unless you set otherwise, and positions move with time, country and location. There is no total-result count and no AI Overview; People also ask gives the questions, not their answers; videos, shorts and discussions are detected on English-language pages only. Billing: each result page read counts as one request (pagesScraped). To find where one site ranks, use rank-check instead: it costs one request at any depth.

POST /search Web search
https://api.fetchlayer.dev/google-search/search
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

query string required

The search query, exactly as typed into Google (1–2048 characters).

country string optional

Two-letter country the results are for: US, GB, DE, FR, IN, BR and so on. Case-insensitive. Rankings differ by country. (default: US)

language string optional

Interface and snippet language: en, de, fr, pt-BR and so on. (default: en)

location string optional

A city to localize results to, as a canonical location name "City,Region,Country", e.g. "Austin,Texas,United States". Local results and rankings follow it.

device string optional

desktop or mobile results. A mobile search takes about 15 seconds. (default: desktop)

safeSearch string optional

off, or on to filter explicit results. (default: off)

timeRange string optional

any, hour, day, week, month or year: only results from that period. (default: any)

page number optional

Result page to start from (1–15). Do not combine with cursor. (default: 1)

pages number optional

Result pages to read in this request (1–10), or -1 for 10. Each page read counts as one request. (default: 1)

limit number optional

Most organic results to return (1–100), or -1 for 100. Defaults to everything on the pages read.

cursor string optional

A previous response’s nextCursor. Send it with the same query and options.

format string optional

json or markdown. (default: json)

timeoutMs number optional

Time limit for each result page read, in milliseconds (1000–60000).

Response Fields

search

Search Google web results

resultType string

search, rank-check or autocomplete.

requestedUrl string

The Google page this result corresponds to.

notes string[]

Caveats about this particular result — a result whose link could not be followed, a page that could not be read. Empty when there are none. Read it on every call.

transport string

The source this data came from. Always "google".

scrapedAt string

ISO 8601 timestamp of when the data was collected.

parameters object

The searcher the results are for, after defaults: query, country (lower case), language, location, device, safeSearch and timeRange.

organicResults object[]

Organic results, in rank order.

organicResults[].position number

1-based rank among organic results across the pages in this response. Ads never take a position.

organicResults[].page number

The result page it appeared on.

organicResults[].pagePosition number

Its rank on that page.

organicResults[].title string

The result title.

organicResults[].url string

Where the result leads, or null in the rare case the destination could not be determined (a note says so).

organicResults[].domain string

Hostname of url, or null.

organicResults[].displayedUrl string

The address line Google prints, e.g. "https://github.com › SuiteCRM › SuiteCRM". null on forum and social results, which print activity instead.

organicResults[].source string

The site name Google prints beside the result, e.g. "Reddit · r/CRM".

organicResults[].snippet string

The description text, or null.

organicResults[].date string

The date printed before the snippet, as displayed (e.g. "Jan 19, 2026"), or null.

organicResults[].extensions string[]

Extra detail such as "30+ comments · 1 year ago" or "2.7M+ followers".

organicResults[].sitelinks object[]

Sub-links shown under the result, each { title, url }.

organicCount number

Organic results in this response. Google publishes no total-result count.

ads object[]

Text ads, never ranked: position within their block, block (top or bottom), title, url, domain, displayedUrl, description. Google places ads by the searcher’s real location rather than by country, so when no matching vantage point is available the field is left out entirely and a note says why; organic results are unaffected. Treat ads as optional.

answerBox object

A direct answer — type (weather, unit_converter or featured_snippet), title, text, details ({ label, value } rows), url — or null.

peopleAlsoAsk string[]

The questions in the People also ask box. The answers are not returned.

relatedSearches string[]

The related searches Google suggests.

topStories object[]

News stories: title, url, source, date as displayed (e.g. "19 hours ago") and publishedAt (ISO 8601).

videos object[]

Videos and short videos: title, url, platform, channel, date, duration and kind (video or short). English-language pages only.

discussions object[]

Forum and social posts Google groups as discussions: title, url, source, date. English-language pages only.

localResults object[]

Businesses: position, name, rating (out of 5), reviewCount, priceLevel (e.g. "$10–20"), category, address, phone, hours and highlight (a review excerpt).

knowledgePanel object

title, subtitle, description, descriptionSource ({ title, url }), facts ({ label, value } rows) and profiles ({ title, url }), or null.

noResults boolean

True when Google found nothing for the query.

page number

The first result page in this response.

pagesScraped number

Result pages read. Each counts as one request against your plan.

pagesRequested number

The pages this request asked for. Compare with pagesScraped.

hasNextPage boolean

Whether there are more results.

nextCursor string

Pass back as cursor, with the same query and options, to continue. null at the end.

Request

curl -X POST "https://api.fetchlayer.dev/google-search/search" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"query":"open source crm","limit":10}'

Response

{
  "requestedUrl": "https://www.google.com/search?q=open+source+crm&hl=en&gl=us&pws=0&safe=off",
  "scrapedAt": "2026-09-15T20:59:33.616Z",
  "transport": "google",
  "notes": [],
  "resultType": "search",
  "parameters": {
    "query": "open source crm",
    "country": "us",
    "language": "en",
    "location": null,
    "device": "desktop",
    "safeSearch": "off",
    "timeRange": "any"
  },
  "page": 1,
  "pagesScraped": 1,
  "pagesRequested": 1,
  "organicResults": [
    {
      "position": 1,
      "page": 1,
      "pagePosition": 1,
      "title": "Twenty | #1 Open Source CRM",
      "url": "https://twenty.com/",
      "domain": "twenty.com",
      "displayedUrl": "https://twenty.com",
      "source": "Twenty",
      "snippet": "Twenty gives technical teams the building blocks for a custom CRM that meets complex business needs and quickly adapts as the business evolves.",
      "date": null,
      "extensions": [],
      "sitelinks": []
    },
    {
      "position": 2,
      "page": 1,
      "pagePosition": 2,
      "title": "Free Open Source CRM Software | Download EspoCRM",
      "url": "https://www.espocrm.com/download/",
      "domain": "www.espocrm.com",
      "displayedUrl": "https://www.espocrm.com › download",
      "source": "EspoCRM",
      "snippet": "EspoCRM is a free, open-source CRM you host on your own server. Track contacts, manage deals, handle support cases with a built-in customer portal, and run ...",
      "date": null,
      "extensions": [],
      "sitelinks": []
    },
    {
      "position": 3,
      "page": 1,
      "pagePosition": 3,
      "title": "SuiteCRM - Open source CRM for the world",
      "url": "https://github.com/SuiteCRM/SuiteCRM",
      "domain": "github.com",
      "displayedUrl": "https://github.com › SuiteCRM › SuiteCRM",
      "source": "GitHub",
      "snippet": "SuiteCRM is the award-winning open-source, enterprise-ready Customer Relationship Management (CRM) software application. Our vision is to be the most adopted ...",
      "date": null,
      "extensions": [],
      "sitelinks": []
    },
    {
      "position": 4,
      "page": 1,
      "pagePosition": 4,
      "title": "What’s the Best Open-Source CRM for Small and Medium ...",
      "url": "https://www.reddit.com/r/CRM/comments/1ij3e8h/whats_the_best_opensource_crm_for_small_and/",
      "domain": "www.reddit.com",
      "displayedUrl": null,
      "source": "Reddit · r/CRM",
      "snippet": "I work for a small company (20 people), and we’ve been looking for a CRM that is both customizable and developer-friendly. After spending a lot ...",
      "date": null,
      "extensions": [
        "30+ comments · 1 year ago"
      ],
      "sitelinks": [
        {
          "title": "Self hosted open source CRM for business purposes ...",
          "url": "https://www.reddit.com/r/selfhosted/comments/14xzd2v/self_hosted_open_source_crm_for_business_purposes/"
        }
      ]
    }
  ],
  "organicCount": 9,
  "ads": [],
  "answerBox": null,
  "peopleAlsoAsk": [
    "What is the best open source CRM?",
    "Will CRM be replaced by AI?",
    "Is there a free CRM I can use?",
    "Is there a 100% free CRM?"
  ],
  "relatedSearches": [
    "Open source crm github",
    "Open source crm free",
    "Best open source CRM",
    "Open source crm reddit",
    "Open source CRM self-hosted",
    "Open source crm docker",
    "Open source crm list",
    "Open source crm free download"
  ],
  "topStories": [],
  "videos": [],
  "discussions": [],
  "localResults": [],
  "knowledgePanel": null,
  "noResults": false,
  "hasNextPage": true,
  "nextCursor": "eyJ2IjoxLCJxIjoib3BlbiBzb3VyY2UgY3JtIiwiZ2wiOiJ1cyIs…"
}