Source API

Bulk Google Search API

Run many Google searches at once and get every result, from your AI assistant, no-code workflow or own code.

  • 每10 results $0.0017 起
  • Any Country and Language
  • 1,000 Results per Query
What you ask for
Google searches
coffee roaster hamburg
coffee roaster berlin
coffee roaster munich
What you get back
LinkSnippetPosition
northpeak-coffee.deSmall batch roastery in Hamburg. Order beans online or visit our cafe.1
junipervale.deSpecialty coffee roasted in Berlin. Shop coffee beans and visit our cafe.2
brightwave-roastery.deIndependent coffee roastery in Munich. Freshly roasted beans for home and wholesale.1

Trusted by 38,000+ users at startups and Fortune 500 teams

AmazonAirbusUberFedexSAPSeonDatadogZendesk

Works with any tool that can send HTTP requests

  • Claude
  • Cursor
  • Codex
  • Make
  • n8n
  • Zapier
  • Your own code
Get Started

Pick Your Way In

Let an AI assistant or your automation tool do the setup, or call the REST API from your own code.

1

Paste the setup prompt

2

Paste your API key

Get your API key
3

Get your results

See a sample result
Using Make, n8n or Zapier? Here is every field for the HTTP request

Use the HTTP request module or node your tool offers. You need three steps: start the task, wait, then read the results.

1. Start the task (HTTP request)

Method
POST
URL
https://api.datablist.com/v1/sources/tasks
Headers
X-API-Key = your API key
Content-Type = application/json
Body (JSON)
json
{
"sourceId": "bulk-google-source",
"uniqueId": "bulk-google-source-run-1",
"settings": {
"searchQuery": [
"coffee roaster hamburg",
"coffee roaster berlin",
"coffee roaster munich"
],
"searchCountry": "de",
"searchLanguage": "de",
"searchLimit": 100
}
}
Keep
The @id from the response. That is your task ID.

2. Wait until it is done

Add a short wait or delay, then a GET request to https://api.datablist.com/v1/sources/tasks/TASK_ID with the same X-API-Key header. Repeat until status is completed, failed or stopped.

3. Read the results

GET https://api.datablist.com/v1/sources/tasks/TASK_ID/results?limit=50. Map the fields of each result to your columns. If nextCursor is not empty, call again with &cursor= plus that value.

Overview

At a Glance

Search wide instead of deep: run up to 100 Google queries in one task, in the country and language you need, and keep the query behind every result. No Datablist workspace, collection or import needed.

What you give it

What it costs

Use Cases

What Teams Build With It

Put Bulk Google Search wherever your data already flows.

Sales

Build local lead lists

  1. Trade plus city, 100 times
  2. Search Google
  3. Websites to enrich

Pair a trade with every city you serve, run all the searches in one task, and send the result links to a domain or email finder.

Marketing and SEO

Track rankings and mentions

  1. Your keywords
  2. Search every week
  3. Positions over time

Run the same keywords on a schedule, filter on the last week and follow where you and your competitors rank.

Growth

Find profiles with operators

  1. site:instagram.com plus niche
  2. Search Google
  3. Profile URLs

Use site: and quoted phrases to find Instagram, LinkedIn or directory pages for a niche and a location.

Pricing

What Will It Cost You?

Pay per lookup with credits. API access starts on the Growth plan.

Calculator

How much will it cost you?

Tell us how many Google results you need and we'll show you the cheapest way to get them.

Required: API/MCP access and automation start on the Growth plan.

Recommended plan
…
Credits you'll have
…
Total this month
…
Get your API key

Same credits as the Datablist app View pricing

How credits work

1,000 credits = $1, so each credit costs a tenth of a cent. Each query costs 2.5 credits per group of up to 10 results, rounded up on its own, so 11 results for one query cost 5 credits. 1,000 results cost about 250 credits. The task shows credits.used with the real amount. Plan credits renew monthly and reset if unused. Top-up credits never expire.

For Developers

Build It Into Your Code

Everything you need to call the REST API directly: code, responses, endpoints, fields, authentication and limits.

Copy, Paste, Run

A complete script that creates a task, waits for it and prints every result. Replace YOUR_PERSONAL_API_KEY with your key.

# 1. Create the task (returns 202 Accepted and the task "@id")
curl --request POST 'https://api.datablist.com/v1/sources/tasks' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"sourceId": "bulk-google-source",
"uniqueId": "bulk-google-source-run-1",
"settings": {
"searchQuery": [
"coffee roaster hamburg",
"coffee roaster berlin",
"coffee roaster munich"
],
"searchCountry": "de",
"searchLanguage": "de",
"searchLimit": 100
}
}'
# 2. Poll every few seconds until status is completed, failed or stopped
curl 'https://api.datablist.com/v1/sources/tasks/TASK_ID' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY'
# 3. Read the results, then follow nextCursor until it is null
curl 'https://api.datablist.com/v1/sources/tasks/TASK_ID/results?limit=50' \
--header 'X-API-Key: YOUR_PERSONAL_API_KEY'

What the API Returns

One flat JSON object per generated record, plus a nextCursor for the next page. Sample data.

GET /resultsjson
{
"taskId": "00000000000040008000000000000001",
"results": [
{
"resultTitle": "Northpeak Coffee Roasters | Specialty coffee from Hamburg",
"resultSnippet": "Small batch roastery in Hamburg. Order beans online or visit our cafe.",
"resultLink": "https://northpeak-coffee.de",
"resultPosition": 1,
"resultQuery": "coffee roaster hamburg"
}
],
"nextCursor": null
}

Endpoints and Fields

All paths are relative to https://api.datablist.com. Field definitions come from GET /v1/sources/bulk-google-source (docs updated Oct 19, 2026). Schema version: 2026-09-12.

View API schema (JSON) (opens in a new tab)

GET
/v1/sources/bulk-google-source
Read the schema, no key needed
POST
/v1/sources/tasks
Create a task
GET
/v1/sources/tasks/{taskId}
Poll status and progress
GET
/v1/sources/tasks/{taskId}/results
Read results, 1 to 100 per page
POST
/v1/sources/tasks/{taskId}/stop
Cancel a running task
GET
/v1/sources/tasks
Task history, newest first

Schema Reference

Send settings once per task. Sources need no input rows. Results can include extra fields as the source evolves, so keep unknown keys when you parse them.

Show all settings and outputs
Settings
Settings
searchQueryGoogle Search QueriesText list or Text

Google search queries, with one complete query per array element.

searchCountrySearch CountryText

Google country setting. Default to US.Allowed values: "ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at", "au", "aw", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", "br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cd", "cf", "cg", "ch", "ci", "ck", "cl", "cm", "cn", "co", "cr", "cu", "cv", "cx", "cy", "cz", "de", "dj", "dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "fi", "fj", "fk", "fm", "fo", "fr", "ga", "gb", "gd", "ge", "gf", "gh", "gi", "gl", "gm", "gn", "gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", "id", "ie", "il", "in", "io", "iq", "ir", "is", "it", "jm", "jo", "jp", "ke", "kg", "kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", "lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "mg", "mh", "mk", "ml", "mm", "mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na", "nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nu", "nz", "om", "pa", "pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "ps", "pt", "pw", "py", "qa", "re", "ro", "rs", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", "sm", "sn", "so", "sr", "st", "sv", "sy", "sz", "tc", "td", "tf", "tg", "th", "tj", "tk", "tl", "tm", "tn", "to", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", "um", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", "yt", "za", "zm", "zw"

searchLanguageSearch LanguageText

Google language setting. Default to English.Allowed values: "ach", "af", "ak", "am", "ar", "az", "be", "bem", "bg", "bh", "bn", "br", "bs", "ca", "chr", "ckb", "co", "crs", "cs", "cy", "da", "de", "ee", "el", "en", "eo", "es", "es-419", "et", "eu", "fa", "fi", "fo", "fr", "fy", "ga", "gaa", "gd", "gl", "gn", "gu", "ha", "haw", "hi", "hr", "ht", "hu", "hy", "ia", "id", "ig", "is", "it", "iw", "ja", "jw", "ka", "kg", "kk", "km", "kn", "ko", "kri", "ku", "ky", "la", "lg", "ln", "lo", "loz", "lt", "lua", "lv", "mfe", "mg", "mi", "mk", "ml", "mn", "mo", "mr", "ms", "mt", "ne", "nl", "nn", "no", "nso", "ny", "nyn", "oc", "om", "or", "pa", "pcm", "pl", "ps", "pt", "pt-br", "pt-pt", "qu", "rm", "rn", "ro", "ru", "rw", "sd", "sh", "si", "sk", "sl", "sn", "so", "sq", "sr", "sr-ME", "st", "su", "sv", "sw", "ta", "te", "tg", "th", "ti", "tk", "tl", "tn", "to", "tr", "tt", "tum", "tw", "ug", "uk", "ur", "uz", "vi", "wo", "xh", "xx-bork", "xx-elmer ", "xx-hacker ", "xx-klingon", "xx-pirate", "yi", "yo", "zh-cn", "zh-tw", "zu"

searchPeriodTime Period (Optional)Text

The time period for the results.Allowed values: "last_hour", "last_day", "last_week", "last_month", "last_year"

searchLimitLimit Per QueryNumber

Maximum number of results. Default to 300 (⚠️ Max 200 results on the free plan). Google typically stops after 200/300 results.

Outputs
Outputs
resultTitleResult TitleText

resultSnippetResult SnippetText

resultLinkResult LinkText

Format: uri

resultPositionPositionNumber

The result position in Google.

resultQuerySearch QueryText

Search query used to get this result.

One Header, Clear Limits

Create a Personal API Key in your Datablist account and send it on every authenticated request.

Authentication

Send your key in the X-API-Key header. Datablist exchanges and renews access tokens for you.

  • Header: X-API-Key: YOUR_PERSONAL_API_KEY
  • Optional: manage tokens yourself with Authorization: Bearer from POST /v1/account/token
  • One or the other: sending both headers returns 400 AmbiguousCredentials
  • Server side only: keep keys out of URLs, browser code and logs

Limits

  • Inputs: none, a source runs from its settings
  • Size: 10 MiB per request, 16 KiB per generated object
  • Run time: up to 24 hours per task
  • Requests: 120 per 60 seconds for each source operation
  • Active tasks: about 20 at once per account, shared with enrichments
  • Retention: tasks and results are kept for 90 days
FAQ

Frequently Asked Questions

Everything you or your AI coding agent need to integrate the Bulk Google Search API: auth, request, polling, results, limits and retries.