Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/zenserp-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Zenserp Search API
description: Zenserp SERP API. Real-time and historical search engine result pages for Google (web, images, video, news, shopping, maps, reverse image, YouTube, trends), Bing, Yandex and DuckDuckGo, plus asynchronous batch fetching with webhook delivery, Google Shopping product pages, Google Trends, and the reference list endpoints for languages, countries, geo locations and search engines. Endpoint inventory taken from the Zenserp documentation and confirmed against live unauthenticated probes; the v2 and v1 surfaces run side by side.
version: '2.0'
contact:
name: Zenserp Support
url: https://zenserp.com/
email: support@zenserp.com
termsOfService: https://zenserp.com/terms-of-service/
x-logo:
url: https://zenserp.com/wp-content/uploads/2019/07/zenserp-logo.png
x-source: https://app.zenserp.com/documentation (endpoint list decompiled from the docs SPA bundle /js/app.js) + live unauthenticated probes 2026-08-13
servers:
- url: https://app.zenserp.com
description: Zenserp API host. Search, status and the list endpoints are under /api/v2; batches, trends and shopping product pages are under /api/v1.
security:
- apiKeyHeader: []
- apiKeyQuery: []
tags:
- name: Search
description: Core search endpoints supporting all search types and engines.
paths:
/api/v2/search:
get:
operationId: search
summary: Universal Search
description: Submit a search query to Google (default), Bing, Yandex, or DuckDuckGo. The search type is controlled via the `tbm` parameter for Google variants (images, news, shopping, maps, video, trends) and via `engine` for alternative search engines.
tags:
- Search
parameters:
- name: q
in: query
required: true
description: The search query string.
schema:
type: string
example: pied piper
- name: apikey
in: query
required: false
description: Your Zenserp API key (alternative to header-based auth).
schema:
type: string
- name: tbm
in: query
required: false
description: Google search type modifier. Omit for web search. Use `isch` for image search, `nws` for news, `shop` for shopping, `map` for maps, `vid` for YouTube/video search, `trends` for Google Trends.
schema:
type: string
enum:
- isch
- nws
- shop
- map
- vid
- trends
- name: engine
in: query
required: false
description: Target search engine. Defaults to `google`. Set to `bing`, `yandex`, or `duckduckgo` for alternative engines.
schema:
type: string
enum:
- google
- bing
- yandex
- duckduckgo
default: google
- name: gl
in: query
required: false
description: Country code for geolocation targeting (ISO 3166-1 alpha-2). Determines the country-specific Google domain and results.
schema:
type: string
example: us
- name: hl
in: query
required: false
description: Language code for results (IETF BCP 47 / Google hl parameter).
schema:
type: string
example: en
- name: location
in: query
required: false
description: Canonical location name used for geolocation-specific results. Use the /locations list endpoint to get valid values.
schema:
type: string
example: New York,New York,United States
- name: num
in: query
required: false
description: Number of results to return (1–100).
schema:
type: integer
minimum: 1
maximum: 100
default: 10
- name: start
in: query
required: false
description: Offset for pagination (0-based index of the first result).
schema:
type: integer
minimum: 0
default: 0
- name: device
in: query
required: false
description: Emulate results for a specific device type.
schema:
type: string
enum:
- desktop
- mobile
- tablet
default: desktop
- name: tbs
in: query
required: false
description: 'Advanced Google search filters (time range, etc.). Example: `qdr:d` for past day, `qdr:w` for past week.'
schema:
type: string
- name: cr
in: query
required: false
description: Filter results to a specific country using a `country<ISO>` value (e.g., `countryUS`).
schema:
type: string
- name: lr
in: query
required: false
description: Restrict results to a specific language (e.g., `lang_en`).
schema:
type: string
- name: safe
in: query
required: false
description: Safe search setting.
schema:
type: string
enum:
- active
- false
default: false
- name: reverse
in: query
required: false
description: Set to `true` to perform a reverse image search. Requires `tbm=isch` and supplying an image URL via `q`.
schema:
type: boolean
default: false
responses:
'200':
description: Successful search response with structured JSON results.
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResponse'
example:
request_info:
success: true
credits_used: 1
credits_remaining: 99
query:
q: pied piper
gl: us
hl: en
num: 10
engine: google
organic_results:
- position: 1
title: Pied Piper - Wikipedia
url: https://en.wikipedia.org/wiki/Pied_Piper
domain: en.wikipedia.org
description: The Pied Piper of Hamelin is a character in a German legend...
favicon: https://www.google.com/s2/favicons?domain=en.wikipedia.org
'500':
description: Internal Server Error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'422':
description: Validation failed -- one or more request parameters were rejected.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorResponse'
'403':
description: Forbidden -- API key is wrong, you don't have enough requests or you don't have enough rights to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found -- There were no results found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/api/v2/status:
get:
operationId: getStatus
summary: Status & Left Requests
description: This endpoint allows you to check the remaining requests of your API Key.
tags:
- Search
responses:
'200':
description: Remaining request quota for the API key.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
example:
remaining_requests: 1500
'403':
description: Forbidden -- API key is wrong, you don't have enough requests or you don't have enough rights to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found -- There were no results found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
post:
operationId: getStatusPost
summary: Status & Left Requests
description: This endpoint allows you to check the remaining requests of your API Key.
tags:
- Search
responses:
'200':
description: Remaining request quota for the API key.
content:
application/json:
schema:
$ref: '#/components/schemas/StatusResponse'
example:
remaining_requests: 1500
'403':
description: Forbidden -- API key is wrong, you don't have enough requests or you don't have enough rights to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found -- There were no results found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
components:
schemas:
TrendsResult:
type: object
description: A Google Trends comparison data point.
properties:
query:
type: string
description: The search term being tracked.
date:
type: string
description: Date or time period.
value:
type: integer
description: Relative popularity score (0-100).
PaidResult:
type: object
description: A paid advertisement result.
properties:
position:
type: integer
description: Ad position.
title:
type: string
url:
type: string
format: uri
domain:
type: string
description:
type: string
displayed_url:
type: string
description: The URL as displayed in the ad.
RelatedQuestion:
type: object
description: A People Also Ask question-answer pair.
properties:
question:
type: string
answer:
type: string
url:
type: string
format: uri
title:
type: string
SearchResponse:
type: object
description: Top-level search result object returned by the /search endpoint.
properties:
request_info:
$ref: '#/components/schemas/RequestInfo'
query:
$ref: '#/components/schemas/QueryInfo'
organic_results:
type: array
description: List of organic (non-paid) search results.
items:
$ref: '#/components/schemas/OrganicResult'
paid_results:
type: array
description: List of paid advertisement results.
items:
$ref: '#/components/schemas/PaidResult'
featured_snippet:
$ref: '#/components/schemas/FeaturedSnippet'
knowledge_graph:
$ref: '#/components/schemas/KnowledgeGraph'
related_questions:
type: array
description: People Also Ask questions and answers.
items:
$ref: '#/components/schemas/RelatedQuestion'
related_searches:
type: array
description: Related search suggestions.
items:
$ref: '#/components/schemas/RelatedSearch'
image_results:
type: array
description: Image results (when tbm=isch).
items:
$ref: '#/components/schemas/ImageResult'
news_results:
type: array
description: News article results (when tbm=nws).
items:
$ref: '#/components/schemas/NewsResult'
shopping_results:
type: array
description: Shopping product results (when tbm=shop).
items:
$ref: '#/components/schemas/ShoppingResult'
map_results:
type: array
description: Local business results (when tbm=map).
items:
$ref: '#/components/schemas/MapResult'
video_results:
type: array
description: Video/YouTube results (when tbm=vid).
items:
$ref: '#/components/schemas/VideoResult'
trends_results:
type: array
description: Google Trends data points (when tbm=trends).
items:
$ref: '#/components/schemas/TrendsResult'
KnowledgeGraph:
type: object
description: Google Knowledge Graph panel data.
properties:
title:
type: string
type:
type: string
description:
type: string
url:
type: string
format: uri
image:
type: string
format: uri
attributes:
type: object
additionalProperties:
type: string
description: Key-value entity attributes from the knowledge panel.
ErrorResponse:
type: object
description: 'Zenserp error envelope for request-level failures. Verbatim example from the live API: {"error": "No apikey provided."}'
properties:
error:
type: string
description: Human-readable error message.
example: No apikey provided.
NewsResult:
type: object
description: A single news article result.
properties:
position:
type: integer
title:
type: string
url:
type: string
format: uri
source:
type: string
description: News source name.
published_at:
type: string
description: Publication timestamp or relative time.
thumbnail:
type: string
format: uri
FeaturedSnippet:
type: object
description: Google featured snippet (answer box).
properties:
title:
type: string
url:
type: string
format: uri
description:
type: string
type:
type: string
description: Snippet type (paragraph, table, list, etc.).
QueryInfo:
type: object
description: Echo of the query parameters used for this search.
properties:
q:
type: string
description: The search query.
gl:
type: string
description: Country code used.
hl:
type: string
description: Language code used.
num:
type: integer
description: Number of results requested.
engine:
type: string
description: Search engine used.
tbm:
type: string
description: Search type modifier used.
location:
type: string
description: Geo location used.
StatusResponse:
type: object
description: Remaining request quota for the authenticated API key.
properties:
remaining_requests:
type: integer
description: Number of searches left in the current billing period.
example: 1500
ValidationErrorResponse:
type: object
description: Zenserp validation error envelope, documented verbatim in the Error Codes section of the Zenserp documentation.
properties:
errors:
type: array
description: One object per failing request, keyed by parameter name.
items:
type: object
additionalProperties:
type: string
example:
errors:
- q: no query specified.
search_engine: search engine not found.
ShoppingResult:
type: object
description: A single Google Shopping product result.
properties:
position:
type: integer
title:
type: string
url:
type: string
format: uri
price:
type: string
description: Product price as a formatted string (e.g., "$29.99").
store:
type: string
description: Merchant/store name.
rating:
type: number
format: float
description: Product rating (0-5).
reviews:
type: integer
description: Number of reviews.
thumbnail:
type: string
format: uri
ImageResult:
type: object
description: A single image search result.
properties:
position:
type: integer
title:
type: string
url:
type: string
format: uri
image_url:
type: string
format: uri
description: Direct URL to the image.
thumbnail:
type: string
format: uri
description: URL to thumbnail version.
source:
type: string
description: Originating website domain.
RequestInfo:
type: object
description: Metadata about the API request.
properties:
success:
type: boolean
description: Whether the request was successful.
credits_used:
type: integer
description: Number of API credits consumed by this request.
credits_remaining:
type: integer
description: Remaining credits in the current billing period.
RelatedSearch:
type: object
description: A related search suggestion.
properties:
query:
type: string
description: Related query text.
MapResult:
type: object
description: A single Google Maps local business result.
properties:
position:
type: integer
title:
type: string
address:
type: string
phone:
type: string
website:
type: string
format: uri
rating:
type: number
format: float
reviews:
type: integer
category:
type: string
hours:
type: string
description: Business hours summary.
latitude:
type: number
format: double
longitude:
type: number
format: double
OrganicResult:
type: object
description: A single organic (non-paid) search result.
properties:
position:
type: integer
description: 1-based ranking position in results.
title:
type: string
description: Title of the result.
url:
type: string
format: uri
description: URL of the result page.
domain:
type: string
description: Domain of the result.
description:
type: string
description: Snippet/description text for the result.
favicon:
type: string
format: uri
description: URL of the site favicon.
sitelinks:
type: array
description: Additional sub-links shown below the main result.
items:
type: object
properties:
title:
type: string
url:
type: string
format: uri
VideoResult:
type: object
description: A single YouTube/video search result.
properties:
position:
type: integer
title:
type: string
url:
type: string
format: uri
channel:
type: string
description: Channel or uploader name.
published_at:
type: string
description: Video publication date or relative time.
duration:
type: string
description: Video duration (e.g., "5:32").
views:
type: string
description: View count as formatted string.
thumbnail:
type: string
format: uri
securitySchemes:
apiKeyHeader:
type: apiKey
in: header
name: apikey
description: API key passed in the request header.
apiKeyQuery:
type: apiKey
in: query
name: apikey
description: API key passed as a query parameter.