Google Search
The Pullbay Google Search API provides programmatic access to Google web search results. Integrate SERP data into your applications, dashboards, and analytics pipelines without scraping or managing your own search infrastructure.
Base URL: https://api.pullbay.com
Overview
The Google Search service lets you:
Run a Google web search for any query string
Page through results with
page, or pull a larger batch of results in one request withmaxItemsPass through a handful of optional, loosely-specified query modifiers (
safe,hl,country,noEncode) supported by the underlying search
This is a single-endpoint service: there is one GET request that returns Google's organic search results for a query.
Common Use Cases
SEO Rank Tracking — Run the same query on a schedule and track how a domain's position in data moves over time.
SERP Research — Pull the current result set for a keyword to see which domains, titles, and snippets currently rank.
Content & Competitor Research — Search topics relevant to your niche and mine the title/snippet fields for how competitors position themselves.
Brand Monitoring — Search for your brand or product name periodically and check which pages and snippets show up.
Data Pipelines — Feed Google search results into a downstream analytics, alerting, or BI pipeline instead of scraping search result pages directly.
Endpoints
GET /google-search/search
Search the web via Google
page / maxItems
Search
Returns Google search results for query.
Request
Parameters
query
string
Yes
—
Search query, 1–1000 characters
safe
string
No
—
Safe-search filter string. The API spec doesn't document a restricted set of accepted values for this parameter.
hl
string
No
—
Language code string. The API spec doesn't document a restricted set of accepted values for this parameter.
country
string
No
—
Country/region string. The API spec doesn't document a restricted set of accepted values for this parameter.
count
string
No
—
Result-count selector. This is a closed enum — the only currently accepted value is "10". The spec does not document any other accepted value.
noEncode
string
No
—
String parameter. The API spec doesn't document a restricted set of accepted values for this parameter.
maxItems
integer
No
—
One-shot bulk pull, 1–200 results
page
integer
No
—
Page number, 1 and up (the documented maximum is effectively unbounded)
Note: page and maxItems are both listed as independent optional parameters on this endpoint. The spec does not document a mutual-exclusivity rule between them — use page for sequential page-based navigation, or maxItems to request a larger batch of results in a single call.
Example
Response
Response Schema
pagination.page
integer, nullable
Current page number (only set when using page)
pagination.hasNextPage
boolean, nullable
Whether another page is available
pagination.cursor / pagination.offset
string, nullable
Not used by this endpoint
pricing.creditsCharged
number
Credits charged for this request
Credit cost: dynamic, returned in pricing.creditsCharged. No published flat rate.
Errors
All non-2xx responses share the same envelope:
400
Bad request — missing or invalid parameters
402
Insufficient credits
404
Not found
Object Schema
GoogleSearchResult object
type
string
Result type, e.g. searchResult
title
string
Title of the search result
link
string (uri)
URL of the search result
snippet
string
Text snippet shown beneath the result title
Note: as documented, the GoogleSearchResult object contains only these four fields — there is no position/rank field, no rich-result metadata, and no sitelinks in the schema.
Python Example: Paginating Through Search Results
This example pages through results using page, stopping when a page comes back with no results or pagination.hasNextPage is explicitly false. The check for an empty page matters here because, as the sample response above shows, hasNextPage can come back as null rather than a clean boolean:
Each request is billed independently, with the charged amount reported in that response's pricing.creditsCharged. If you'd rather pull a larger batch in one call instead of looping over page, pass maxItems (1–200) on a single request.
FAQ
Last updated