- Google-style web search results API
Google-style web search results API
Organic web search results with URL, title, description, displayed URL and, when the page prints one, its date.
GET /v1/google/search
GET /v1/google/search
Organic web search results with URL, title, description, displayed URL and, when the page prints one, its date. The results come from Yahoo Japan's search (search.yahoo.co.jp), not from google.com: the order, some URLs and some snippets differ from Google's own page. Measured against stored real Google first pages for 18 searches, 5.5 of 8.7 URLs on average were also on Google's page (63%, from 2 to 8; the first result was the same on 12 of 22 tries). Organic results only: no ads, answer boxes or related searches. date_posted takes hour, day, week, month or year. The cursor is the next page, 1 to 10 of about 10 results each; page works as the cursor. There is no region or language option, and searches for places near you follow our servers' location, not yours. When the search provider refuses every try the call fails and can be retried.
- Cost: 1 credit
- Cache: Results are kept up to 1 day; send
max_age_daysto reuse them for free. - Timeout: A request still running after about 25 seconds answers
202with a job to poll (Batch and jobs).
Parameters#
| Name | Type | Required | Description |
|---|---|---|---|
query | string | yes | Search terms. Also accepted as keyword, q. |
date_posted | string | no | Only results from this window. One of hour, day, week, month, year. Also accepted values: last-hour for hour, last-day for day, last-week for week, last-month for month, last-year for year. |
Every request also accepts:
cursor: the cursor from the previous page (Pagination).trim:truefor a smaller response withoutnullfields andextra.raw:trueto also get the platform's original object asraw.max_age_days: accept a cached result up to this many days old, for 0 credits (Caching).
Example request#
Set your key in the environment first (see Authentication).
1curl -G "https://api.socialscrape.dev/v1/google/search" \2 -H "x-api-key: $SOCIALSCRAPE_API_KEY" \3 --data-urlencode "query=social media api"1import os2import requests34params = {5 "query": "social media api",6}7res = requests.get(8 "https://api.socialscrape.dev/v1/google/search",9 headers={"x-api-key": os.environ["SOCIALSCRAPE_API_KEY"]},10 params=params,11)12body = res.json()1314if body["ok"]:15 print(body["data"])16else:17 print(body["error"]["code"], body["error"]["message"])1const url = new URL("https://api.socialscrape.dev/v1/google/search");2url.search = new URLSearchParams({3 "query": "social media api"4}).toString();5const res = await fetch(url, {6 headers: { "x-api-key": process.env.SOCIALSCRAPE_API_KEY! },7});8const body = await res.json();910if (body.ok) {11 console.log(body.data);12} else {13 console.error(body.error.code, body.error.message);14}1{2 "nodes": [3 {4 "name": "SocialScrape Google-style web search results",5 "type": "n8n-nodes-base.httpRequest",6 "typeVersion": 4.2,7 "position": [8 0,9 010 ],11 "parameters": {12 "method": "GET",13 "url": "https://api.socialscrape.dev/v1/google/search",14 "sendQuery": true,15 "queryParameters": {16 "parameters": [17 {18 "name": "query",19 "value": "social media api"20 }21 ]22 },23 "sendHeaders": true,24 "headerParameters": {25 "parameters": [26 {27 "name": "x-api-key",28 "value": "={{ $env.SOCIALSCRAPE_API_KEY }}"29 }30 ]31 }32 }33 }34 ],35 "connections": {}36}Example response#
This is a sample from a recorded response, lists and long text are shortened. Status 200.
1{2 "ok": true,3 "credits_charged": 1,4 "credits_remaining": 4999,5 "cached": false,6 "cached_at": null,7 "request_id": "req_5b25980178af95e587262001",8 "data": {9 "object": "list",10 "items": [11 {12 "object": "search_result",13 "platform": "google",14 "position": 1,15 "title": "Outstand - Unified Social Media API for AI Agents",16 "url": "https://www.outstand.so/",17 "displayed_url": "https://www.outstand.so",18 "snippet": "One API call posts to X, LinkedIn, Instagram, and 11 more platforms. Built for AI agents, schedulers, and analytics dashboards - ship in hours.",19 "kind": "organic",20 "extra": {21 "provider": "yahoo_japan"22 }23 },24 {25 "object": "search_result",26 "platform": "google",27 "position": 2,28 "title": "Social Media Posting API | 16 Platforms, One Call - Zernio",29 "url": "https://zernio.com/social-media-api",30 "displayed_url": "https://zernio.com › social-media-api",31 "snippet": "Zernio's social media posting API lets you publish, schedule, and manage content across 16 platforms. Replace months of integration work with a single ...",32 "kind": "organic",33 "extra": {34 "provider": "yahoo_japan"35 }36 }37 ],38 "cursor": "2",39 "has_more": true,40 "parent": null41 },42 "cursor": "2",43 "has_more": true44}Response#
A list of SearchResult objects in data.items, with data.cursor and data.has_more.
See Data models for every field. The envelope around data is described in Responses.
Errors#
Failures are free: credits_charged is 0. Branch on error.code, never on the message.
| Code | HTTP | Retry | Meaning |
|---|---|---|---|
invalid_params | 400 | no | A parameter is missing, unknown or has the wrong type. |
not_found | 404 | no | The platform says this profile, post or item does not exist. |
Every request can also fail with the account and platform errors listed on the Errors page.
Related endpoints#
- Google Ads Transparency advertiser search (
GET /v1/google/ad-library/advertisers/search) - Google Ads Transparency ads by advertiser (
GET /v1/google/ad-library/company/ads) - Google Ads Transparency ad details (
GET /v1/google/ad-library/ad)