Serpent API Documentation
Complete guide to integrating search, Maps business data, AI ranking and social data.
Getting Started
Serpent API provides programmatic access to search results from Google, Bing, Yahoo, and DuckDuckGo, plus AI ranking and social media data. It supports three categories of endpoints:
SERP Endpoints
- Quick Search — 1 page, ~10 results. Web billing follows account state. Use
/api/searchDeep Search for multi-page Google results (up to 10 pages, ~100 results). "Google SERP" here means search results from Google · Bing · Yahoo · DuckDuckGo · Brave. - Deep Search — Up to 10 pages (~100 results) with related searches, ads, PAA, featured snippets, and AI overviews. Defaults to 5 pages.
- News Search — News articles with sources, timestamps, and snippets
- Image Search — Images with thumbnails, originals, dimensions, and sources
- Video Search — Video results with titles, thumbnails, durations, and views
- Shopping Search — Product results with titles, prices where available, merchant/store names, URLs, and thumbnails
AI Ranking Endpoints
- Combined AI Rank — Check how AI models (Claude, ChatGPT, Gemini, Perplexity) cite your domain
- Single Engine Rank — Query a specific LLM for citation analysis
Social Media Endpoints
- YouTube Search — Search for videos, channels, and playlists
- YouTube Video/Channel — Get detailed video and channel information
- Instagram Profile — Scrape public profile data and recent posts
Google Maps Endpoints
- Quick Place Search — up to 20 ranked places; draws from the shared 10-call free pool for new accounts
- Deep Place Search — attempts up to 100 ranked places with truthful partial-detail status
- Place Details — one richest-available normalized place record
- Reviews — up to 20 public reviews per call with opaque pagination
Quick Start
- Create an account — Sign up with your Google account (free)
- Generate an API key — Go to the API Keys page and create a key
- Make your first request — Use your API key to search
curl "https://apiserpent.com/api/search?q=hello+world" \
-H "X-API-Key: YOUR_KEY"
You get 10 free lifetime calls, shared across every endpoint — Web Search, News, Images, Videos, Shopping, AI Rank, LinkedIn, Maps, YouTube, and Instagram.
Base URL
All API requests use the following base URL:
All endpoints are relative to this base. For example, the web search endpoint is:
https://apiserpent.com/api/search
Authentication
All search endpoints require an API key. You can authenticate in two ways:
Option 1: HTTP Header (Recommended)
X-API-Key: sk_live_your_api_key_here
Option 2: Query Parameter
GET /api/search?q=keyword&api_key=sk_live_your_api_key_here
Free Tier
Every new account receives one shared lifetime allowance of 10 free calls (no credit card required), usable across:
- Quick Search (
/api/search/quick) — all engines (Google, Bing, Yahoo, DDG, Brave) — draws from the same shared pool - Deep Search (
/api/search) — all engines - Maps Quick (
/api/maps/search/quick) — draws from the same shared pool
Quick Search
Perform a fast organic web search. Returns 1 page (~10 results). Use Deep Search (/api/search) for multi-page Google results and richer SERP features. "Google SERP" here means search results from Google · Bing · Yahoo · DuckDuckGo · Brave. Quick Search is optimized for organic/result-list workflows. Web billing follows account state: Growth/Scale accounts and Default accounts with at least a $10 live balance are billed one published web-search unit per request for supported page depths; low-balance Default accounts can be billed per delivered page.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query |
| num | integer | Desired total results for compatible engines (default: 10). Google Quick remains one organic page; use Deep Search for multi-page Google results. |
| pages | integer | Accepted for compatibility (default: 1). Use Deep Search for multi-page Google results. |
| engine | string | google, bing, yahoo, ddg, or brave (default: "google") |
| country | string | Country code for localized results (default: "us") |
| freshness | string | Time filter: h/1h (hour), d/1d (day), 7d (week), w, m/1m, y/1y (optional) |
| safe | string | SafeSearch: off, moderate, or strict (optional) |
| language | string | 2-letter ISO language code (e.g., en, es, de, fr, ja). Restricts results to that language. Supported by Google, Yahoo, and DDG. (optional) |
| format | string | full (default) or simple. Simple returns position, title, and url only. |
| pixel_position BETA | boolean | When true, every item in the response (organic, AI Overview, PAA, ads, featured snippet, knowledge panel, local pack, shopping, videos) gets two sibling fields: a pixel_position integer (y-coordinate in pixels from the top of the rendered desktop SERP) and a pixel_box object with the element's full bounding rectangle ({ x, y, w, h }). Supported on all four engines (Google, Yahoo, Bing, DuckDuckGo) on desktop, US locale. Paid tiers only — free-tier responses include metadata.pixelPositionUnavailable: 'free_tier'. No price increase. Full spec → |
Example Request
curl "https://apiserpent.com/api/search/quick?q=weather+today&engine=google&country=uk" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "weather today",
"engine": "google",
"country": "uk",
"results": {
"organic": [
{
"position": 1,
"title": "Weather Forecast - Today",
"url": "https://example.com/weather",
"snippet": "Today's weather forecast...",
"displayedUrl": "example.com"
}
],
"ads": { "top": [], "bottom": [], "totalCount": 0 },
"peopleAlsoAsk": [],
"relatedSearches": [{ "query": "weather tomorrow" }, { "query": "weather this week" }],
"featuredSnippet": null,
"aiOverview": null,
"richSnippets": [],
"videos": [],
"shopping": []
},
"meta": {
"totalOrganic": 7,
"elapsed": "1200ms",
"timestamp": "2026-03-03T10:30:00.000Z"
}
}
/api/search) for multi-page results and richer SERP features. Add include_aio=true to Deep Search when you need AI Overview fields on eligible paid calls.Deep Search
Perform a deep web search that returns up to 100 organic results with related searches, ads, People Also Ask, featured snippets, AI overviews, and more. For more than 10 results, the API automatically retrieves multiple pages. This endpoint is free-tier eligible.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query (max 2,048 characters) |
| num | integer | Number of results: 10–100 (default: 10). Automatically determines pages to retrieve. Rounded up to the nearest 10 (e.g., num=15 returns up to 20). |
| engine | string | google, bing, yahoo, ddg, or brave (default: "google") |
| country | string | Country code for localized results (default: "us"). See Country Support. |
| format | string | Response format: full or simple (default: "full"). Simple returns just position, title, and URL. |
| pages | integer | Number of result pages to retrieve: 1–10 (default: 1). Alternative to num. |
| freshness | string | Time filter: h/1h (hour), d/1d (day), 7d (week), w, m/1m, y/1y (optional) |
| safe | string | SafeSearch: off, moderate, or strict (optional) |
| language | string | 2-letter ISO language code (e.g., en, es, de, fr, ja). Restricts results to that language. Supported by Google, Yahoo, and DDG. (optional) |
| include_aio | boolean | Google Deep only. Set true to request AI Overview fields on eligible paid calls. If unavailable, aiOverview stays null and organic results still return. |
| pixel_position BETA | boolean | When true, every item in the response (organic, AI Overview, PAA, ads, featured snippet, knowledge panel, local pack, shopping, videos) gets two sibling fields: a pixel_position integer (y-coordinate in pixels from the top of the rendered desktop SERP) and a pixel_box object with the element's full bounding rectangle ({ x, y, w, h }). Supported on all four engines (Google, Yahoo, Bing, DuckDuckGo) on desktop, US locale. Paid tiers only — free-tier responses include metadata.pixelPositionUnavailable: 'free_tier'. No price increase. Full spec → |
num or pages, not both. If you pass num=50, the API will automatically retrieve 5 pages. Each page yields ~10 results. Multi-page web billing follows account state: Growth/Scale accounts and Default accounts with at least a $10 live balance are billed one published web-search unit per request for supported page depths; low-balance Default accounts can be billed per delivered page.Example Request
curl "https://apiserpent.com/api/search?q=best+seo+tools&num=30&engine=google&country=us" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "best seo tools",
"engine": "google",
"country": "us",
"pages": 3,
"results": {
"organic": [
{
"position": 1,
"title": "10 Best SEO Tools for 2026",
"url": "https://example.com/seo-tools",
"snippet": "Discover the top SEO tools...",
"displayedUrl": "example.com"
}
],
"relatedSearches": [{ "query": "free seo tools" }],
"ads": { "top": [], "bottom": [], "totalCount": 0 },
"peopleAlsoAsk": [],
"featuredSnippet": null,
"aiOverview": null,
"richSnippets": [],
"videos": [],
"shopping": []
},
"metadata": {
"totalOrganicResults": 30,
"hasAds": false,
"hasRelatedSearches": true,
"hasPeopleAlsoAsk": false,
"hasVideos": false,
"hasShopping": false,
"hasFeaturedSnippet": false,
"hasAiOverview": false,
"source": "google"
},
"meta": {
"totalOrganic": 30,
"requestedNum": 30,
"elapsed": "8500ms",
"timestamp": "2026-03-10T10:30:00.000Z"
}
}
News Search API
Search for news articles from various sources. Returns article titles, sources, publication times, and snippets.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query |
| num | integer | Number of articles: 1–50 (default: all available) |
| pages | integer | Number of result pages to retrieve: 1–5 (default: 1). Alternative to num. |
| engine | string | google, bing, yahoo, ddg, or brave (default: "google") |
| country | string | Country code for localized news (default: "us") |
| freshness | string | Time filter: h/1h (hour), d/1d (day), 7d (week), w, m/1m, y/1y (optional) |
| language | string | 2-letter ISO language code (e.g., en, es, de). Supported by Google, Yahoo, and DDG. (optional) |
| sort | string | Sort order: relevance or date (optional, Yahoo/Bing only) |
| safe | string | SafeSearch: off, moderate, or strict (optional, Yahoo/Bing only) |
| format | string | full (default) or simple. Simple returns position, title, url, and source only. |
Example Request
curl "https://apiserpent.com/api/news?q=artificial+intelligence&num=20&country=us" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "artificial intelligence",
"type": "news",
"engine": "google",
"country": "us",
"pages": 2,
"results": {
"articles": [
{
"position": 1,
"title": "AI Breakthroughs Reshape Industry",
"url": "https://example.com/ai-news",
"source": "Tech News Daily",
"publishedTime": "2 hours ago",
"snippet": "Major advances in AI...",
"image": "https://example.com/ai-news-thumb.jpg",
}
],
"totalResults": 20
},
"meta": {
"totalArticles": 20,
"elapsed": "1800ms",
"timestamp": "2026-03-03T10:30:00.000Z"
}
}
Image Search API
Search for images across the web. Returns thumbnails, original image URLs, and source websites. A single request can return up to 100 images.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query |
| num | integer | Number of results: 1–100 (default: all available) |
| engine | string | google, bing, yahoo, ddg, or brave (default: "google") |
| country | string | Country code for localized results (default: "us") |
| size | string | Filter by image size: small, medium, large, wallpaper (optional) |
| type | string | Filter by image type: photo, clipart, lineart, animated, face (optional) |
| color | string | Filter by color: red, blue, green, yellow, etc. (optional) |
| aspect | string | Aspect ratio: square, wide, or tall (optional) |
| layout | string | Layout: square, tall, or wide (optional, DDG only) |
| license | string | License filter: cc, public, share, sharecommercial, modify, modifycommercial, any (optional) |
| people | string | People filter: face, portrait, or nonportrait (optional, Yahoo only) |
| time | string | Time filter: day, week, month, year (DDG/Yahoo only) |
| language | string | 2-letter ISO language code (e.g., en, es, de). Restricts image results by language. Supported by Google and Yahoo. (optional) |
| format | string | full (default) or simple. Simple returns position, title, original, and thumbnail only. |
Example Request
curl "https://apiserpent.com/api/images?q=mountain+landscape&num=20" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "mountain landscape",
"type": "images",
"engine": "google",
"country": "us",
"results": {
"images": [
{
"position": 1,
"title": "Beautiful Mountain View",
"thumbnail": "https://example.com/thumb/...",
"original": "https://example.com/image.jpg",
"width": null, // reserved, not currently populated
"height": null, // reserved, not currently populated
"source": "example.com",
"pageUrl": "https://example.com/gallery"
}
],
"totalResults": 20
},
"meta": {
"totalImages": 20,
"elapsed": "2100ms",
"timestamp": "2026-03-03T10:30:00.000Z"
}
}
Video Search API
Search for videos from DuckDuckGo, Yahoo/Bing, or Brave. Returns video titles, thumbnails, durations, view counts, and source URLs. Available with engine=ddg (default), engine=yahoo/engine=bing, or engine=brave.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query |
| num | integer | Number of results: 1–100 (default: all available) |
| engine | string | google, ddg, yahoo, bing, or brave (default: "ddg"). |
| country | string | Country code for localized results (default: "us") |
| duration | string | Filter by duration: short, medium, or long (optional, DDG & Yahoo/Bing) |
| resolution | string | Filter by resolution: high or standard (DDG); 360p, 480p, 720p, hd, 1080p (Yahoo/Bing) (optional) |
| time | string | Time filter: day, week, month, year (optional, Yahoo/Bing) |
| freshness | string | Time filter: h/1h (hour), d/1d (day), 7d (week), w, m/1m, y/1y (optional) |
| safe | string | SafeSearch: off, moderate, or strict (optional) |
| format | string | full (default) or simple. Simple returns position, title, url, and duration only. |
Example Request
curl "https://apiserpent.com/api/videos?q=python+tutorial&num=20&engine=ddg" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "python tutorial",
"type": "videos",
"engine": "ddg",
"country": "us",
"results": {
"videos": [
{
"position": 1,
"title": "Python Tutorial for Beginners",
"url": "https://www.youtube.com/watch?v=...",
"thumbnail": "https://tse2.mm.bing.net/th?...",
"duration": "6:14:07",
"viewCount": 45000000,
"publishedTime": "2023-08-09T00:00:00.0000000",
"publisher": "YouTube"
}
],
"totalResults": 20
},
"meta": {
"totalVideos": 20,
"elapsed": "3800ms",
"timestamp": "2026-03-10T10:30:00.000Z"
}
}
Shopping Search API
Search product results with engine=google, engine=yahoo (default), engine=ddg, or engine=brave. All four serve product listings with distinct, engine-specific field names: engine=google returns Google-style fields (link, source, product_rating, product_reviews); engine=yahoo, engine=ddg, and engine=brave return card-style fields (url, merchant, store, rating, reviews). Each item also includes price when available, a separate currency field, thumbnail, sponsored flag, and snippet.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The product search query |
| engine | string | google, yahoo, ddg, or brave (default: "yahoo") |
| country | string | Country code for localized product results (default: "us") |
| num | integer | Number of products to return: 1–20 (default: 10) |
| language | string | Language code, for example en (optional) |
| format | string | full (default) or simple. Simple field names follow the engine — google returns position, title, price, source, link, and thumbnail; yahoo, ddg, and brave return position, title, price, merchant, url, and thumbnail. |
Example Request
curl "https://apiserpent.com/api/shopping?q=nike+running+shoes&engine=google&num=10" \
-H "X-API-Key: sk_live_your_api_key"
Example Response
{
"success": true,
"query": "nike running shoes",
"type": "shopping",
"engine": "google",
"country": "us",
"results": {
"shopping": [
{
"position": 1,
"title": "Nike Vomero 18 Men's Road Running Shoes",
"link": "https://www.nike.com/...",
"source": "Nike",
"price": "$150.00",
"currency": "USD",
"thumbnail": "https://example.com/product.jpg",
"product_rating": 4.7,
"product_reviews": 128,
"sponsored": false,
"snippet": "A stable, responsive daily trainer for neutral runners."
}
],
"totalResults": 10
},
"meta": {
"totalShopping": 10,
"elapsed": "4200ms",
"timestamp": "2026-08-03T10:30:00.000Z"
}
}
Pixel Position BETA
Add pixel_position=true to /api/search or /api/search/quick and every item in the response — organic, AI Overview, PAA, ads, featured snippet, knowledge panel, local pack, shopping, videos — gets two extra fields: a pixel_position integer (y-coordinate in pixels from the top of the rendered desktop SERP) and a pixel_box object with the element's full bounding rectangle ({ x, y, w, h }). Useful for above-the-fold analysis, share-of-voice scoring, and SERP layout audits.
metadata.pixelPositionUnavailable: 'free_tier' instead of the pixel fields. No price increase over a normal call. Not supported on News, Images, or Videos endpoints. Full spec →AI Ranking API — Combined
Check how AI language models cite and rank your domain or brand. This endpoint queries multiple LLMs (Claude, ChatGPT, Gemini, Perplexity) simultaneously and returns citation analysis for each.
Parameters
| Parameter | Type | Description |
|---|---|---|
| keyword required | string | The search keyword/topic to query. Also accepts q as an alias. |
| domain | string | Your domain to track in citations (e.g., example.com) (optional) |
| engines | string | Comma-separated list of AI engines: claude, chatgpt, gemini, perplexity (default: all four) |
| prompt_type | string | Prompt style: standard, deep, or brand (default: "standard") |
Example Request
curl "https://apiserpent.com/api/ai/rank?keyword=best+seo+tools&domain=ahrefs.com&engines=claude,chatgpt" \
-H "X-API-Key: sk_live_your_api_key"
Per-Engine Response Fields
| Field | Type | Description |
|---|---|---|
| target_found | boolean | true if the requested domain (or any of its subdomains) appears in this engine's citations |
| target_position | integer | null | 1-indexed citation position where the domain was first matched. null if not found. |
| target_match_type | string | null | "exact" (cited domain equals domain after stripping www.), "subdomain" (a subdomain of domain was cited — e.g. docs.example.com for example.com), or null if not found. |
| target_matched_domain | string | null | The actual domain that matched. Equals domain for exact matches; equals the subdomain hostname for subdomain matches. |
| citations | array | List of citations returned by this engine, each with position, url, title, domain. |
| total_citations | integer | Number of citations parsed. |
| response_text | string | The full LLM response text used to derive the citations. |
| latency_ms | integer | Time the engine took to answer, in milliseconds. |
Subdomain matching is implicit — the API tries an exact match first, then falls back to a subdomain match. Use target_match_type on the client to differentiate the two when displaying ranking results.
AI Ranking API — Single Engine
Query a specific AI engine for citation analysis. Available engines: claude, chatgpt, gemini, perplexity.
URL Paths
| Path | Engine | Cost per 1K |
|---|---|---|
/api/ai/rank/claude | Anthropic Claude | $12.00 |
/api/ai/rank/chatgpt | OpenAI ChatGPT | $10.00 |
/api/ai/rank/gemini | Google Gemini | $2.20 |
/api/ai/rank/perplexity | Perplexity | $20.00 |
Prices shown are Default tier. Growth (10× off) locks in with a one-time $100 deposit and Scale (20× off) with a one-time $500 deposit.
Parameters
| Parameter | Type | Description |
|---|---|---|
| keyword required | string | The search keyword/topic. Also accepts q as an alias. |
| domain | string | Your domain to track in citations (optional) |
| prompt_type | string | Prompt style: standard, deep, or brand (default: "standard") |
Example Request
curl "https://apiserpent.com/api/ai/rank/claude?keyword=best+crm+software&domain=hubspot.com" \
-H "X-API-Key: sk_live_your_api_key"
YouTube Search API
Search for YouTube videos, channels, and playlists using the YouTube Data API. This endpoint is free-tier eligible.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | The search query |
| type | string | Result type: video, channel, or playlist (default: "video") |
| order | string | Sort order: relevance, date, viewCount, rating, title (default: "relevance") |
| num | integer | Number of results: 1–50 (default: 10) |
| duration | string | Video duration: any, short (<4 min), medium (4-20 min), long (>20 min) (optional) |
| country | string | Country code for regional results (default: "us") |
| details | boolean | Include detailed video statistics (true or 1) (default: false) |
| published_after | string | ISO 8601 datetime to filter videos published after (optional) |
Example Request
curl "https://apiserpent.com/api/social/youtube/search?q=machine+learning&type=video&num=10&order=viewCount" \
-H "X-API-Key: sk_live_your_api_key"
YouTube Video Details
Get detailed information about one or more YouTube videos, including statistics (views, likes, comments), descriptions, and tags. This endpoint is free-tier eligible.
Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | A single YouTube video ID (e.g., dQw4w9WgXcQ) |
| ids | string | Comma-separated list of video IDs (max 50). Use id or ids, not both. |
Example Request
curl "https://apiserpent.com/api/social/youtube/video?id=dQw4w9WgXcQ" \
-H "X-API-Key: sk_live_your_api_key"
YouTube Channel Details
Get channel information including subscriber count, video count, total views, and optionally recent videos. This endpoint is free-tier eligible.
Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | YouTube channel ID (e.g., UCBcRF18a7Qf58cCRy5xuWwQ) |
| handle | string | YouTube handle (e.g., @mkbhd). Use id, handle, or url. |
| url | string | Full YouTube channel URL |
| include_videos | boolean | Include recent videos (true or 1) (default: false) |
| video_count | integer | Number of recent videos to include: 1–50 (default: 10) |
Example Request
curl "https://apiserpent.com/api/social/youtube/channel?handle=@mkbhd&include_videos=true&video_count=5" \
-H "X-API-Key: sk_live_your_api_key"
Instagram Profile API
Scrape public Instagram profile data including follower counts, bio, and recent posts. This endpoint is free-tier eligible.
Parameters
| Parameter | Type | Description |
|---|---|---|
| username required | string | Instagram username (e.g., natgeo). Also accepts handle (with @) or url. |
| include_posts | boolean | Set true to include recentPosts (best-effort). Defaults to false — the profile call stays lean. When enabled, recent posts are returned with shortcode, thumbnail, media type, permalink, and post date; like/comment counts are not available. |
| include_post_details | boolean | Set true for rich per-post details — full caption, like/comment counts, video view count, carousel children, music, location, and more (best-effort, up to ~12 recent posts). Implies include_posts. Billed at the higher $4.00/1K profile+post-details rate. |
| include_contact | boolean | Adds contactInfo — public email, phone, WhatsApp number, business contact method, and city. Adds +20% to the credit multiplier. |
| include_business | boolean | Adds businessInfo — professional/business account flags, business category, and shopping/commerce signals. Adds +20% to the credit multiplier. |
| include_reels_info | boolean | Adds reelsInfo — reels/clips counts, highlight reel counts, story, guides, and channel flags. Adds +20% to the credit multiplier. |
| include_profile_detail | boolean | Adds profileDetail — pronouns, joined-recently flag, hide-counts flag, structured bio links/entities, and high-res profile picture URLs. Adds +20% to the credit multiplier. |
Example Request
curl "https://apiserpent.com/api/social/instagram/profile?username=natgeo" \
-H "X-API-Key: sk_live_your_api_key"
include_posts=true or include_post_details=true for posts, and any of the four include_* field groups to expand profile coverage. Field groups are best-effort and vary by profile — absent values are returned as null, never fabricated. Each opted-in field group adds +20% to the call's credit multiplier (1 + 0.2×N).LinkedIn Company API
Serpent's LinkedIn API returns public company firmographics — name, industry, size, headcount, headquarters, specialities, and more — from a company's LinkedIn URL or vanity slug. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| url required | string | Full company LinkedIn URL (e.g., https://www.linkedin.com/company/microsoft). Provide url or slug. |
| slug | string | Company vanity slug (e.g., microsoft) (alternative to url) |
Example Request
curl "https://apiserpent.com/api/linkedin/company?url=https://www.linkedin.com/company/microsoft" \
-H "X-API-Key: sk_live_your_api_key"
LinkedIn Job Search API
Serpent's LinkedIn API returns an array of public job cards matching a keyword search, optionally filtered by location. Use start to page through results. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| keywords required | string | Job search keywords (e.g., software engineer) |
| location | string | Location filter (e.g., San Francisco Bay Area) (optional) |
| start | integer | Pagination offset into the result set (default: 0) |
Example Request
curl "https://apiserpent.com/api/linkedin/jobs?keywords=software+engineer&location=San+Francisco+Bay+Area&start=0" \
-H "X-API-Key: sk_live_your_api_key"
LinkedIn Job Details API
Serpent's LinkedIn API returns the full detail for a single public job posting by ID — description, seniority, employment type, applicant count, salary range, and the job poster. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| job_id required | string | LinkedIn job ID (e.g., 3901234567). Also accepts id as an alias. |
Example Request
curl "https://apiserpent.com/api/linkedin/job?job_id=3901234567" \
-H "X-API-Key: sk_live_your_api_key"
LinkedIn Profile API
Serpent's LinkedIn API returns best-effort public profile basics — name, headline, occupation, location, follower/connection counts, profile flags, and current company — from a profile URL or vanity slug. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| url required | string | Full profile URL (e.g., https://www.linkedin.com/in/williamhgates). Provide url or username. |
| username | string | Profile vanity slug (e.g., williamhgates) (alternative to url) |
| include_company_details | boolean | Set true to add company_details firmographics (name, industry, size, headcount, founded year, HQ) for the profile's current company. Adds +20% to the credit multiplier. |
| include_public_web | boolean | Set true to cross-enrich the profile from public web search results — backfills connections and can refine headline and current company when the profile page leaves them out. Adds +20% to the credit multiplier. |
Example Request
curl "https://apiserpent.com/api/linkedin/profile?username=williamhgates" \
-H "X-API-Key: sk_live_your_api_key"
LinkedIn Full Profile API
Premium endpoint. Serpent's LinkedIn API returns richer public profile detail — identity, summary, full experience history, education, photo, and follower/connection counts. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| url required | string | Full profile URL (e.g., https://www.linkedin.com/in/williamhgates). Provide url or username. |
| username | string | Profile vanity slug (e.g., williamhgates) (alternative to url) |
Example Request
curl "https://apiserpent.com/api/linkedin/profile/full?username=williamhgates" \
-H "X-API-Key: sk_live_your_api_key"
LinkedIn Posts API
Serpent's LinkedIn API returns a person's recent public posts — content, publish date, and engagement (reactions/comments/reposts) — resolved from the person's profile URL, username, or name. This endpoint is free-eligible (shared 10-call pool).
Parameters
| Parameter | Type | Description |
|---|---|---|
| username | string | Profile vanity slug (e.g., williamhgates). Provide username, url, or name. |
| url | string | Full profile URL (e.g., https://www.linkedin.com/in/williamhgates). |
| name | string | Person's full name (e.g., Bill Gates). |
| limit | integer | Max posts to return (default: 10) |
Example Request
curl "https://apiserpent.com/api/linkedin/posts?username=williamhgates" \
-H "X-API-Key: sk_live_your_api_key"
Google Maps Quick Place Search
Returns up to 20 ranked place records. New accounts get 10 free lifetime calls shared across every endpoint — Web Search, News, Images, Videos, Shopping, AI Rank, LinkedIn, Maps, YouTube, and Instagram. The four Maps endpoints serve on https://api.apiserpent.com/api/maps/*; verify your exact query in the playground before production integration.
Parameters
| Parameter | Type | Description |
|---|---|---|
| q required | string | Business category or place query. |
| location | string | Text location. Do not combine with lat/lng. |
| lat, lng | number | Paired coordinates. Both are required when either is supplied. |
| country | string | Two-letter country code (default: us). |
| language | string | Two-letter language code (default: en). |
| zoom | integer | Map zoom from 3 to 21 (default: 14). |
| start | integer | One of 0, 20, 40, 60, or 80. |
Tested cURL
BASE_URL="${SERPENT_BASE_URL:-http://localhost:3001}"
curl --get "$BASE_URL/api/maps/search/quick" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "q=coffee" \
--data-urlencode "location=New York, NY" \
--data-urlencode "country=us"Search response
{
"success": true,
"type": "maps",
"endpoint": "quick",
"places": [{
"rank": 1, "place_id": "...", "name": "Example Coffee",
"website": "https://example.com", "rating": 4.6,
"detail_status": "complete"
}],
"counts": { "requested": 20, "discovered": 20, "returned": 20, "fully_enriched": 19, "core_only": 1 },
"meta": { "elapsed_ms": 27498, "partial": true }
}core_only record keeps its discovered rank and available core fields. Treat its nullable detail fields as unknown, not as confirmed absence. counts and meta.partial make the state explicit.Google Maps Deep Place Search
Attempts positions 1–100 using the same parameters and place schema as Quick. Deep is paid from the first call.
curl --get "$BASE_URL/api/maps/search" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "q=coffee" \
--data-urlencode "location=New York, NY"A local acceptance run on 2026-07-02 returned 97 places in 88.2 seconds: 85 complete and 12 core_only. This measurement is an example of a full-depth pass, not a production latency guarantee — real latency varies with query, country, and platform load.
Google Maps Place Details
Returns one richest-available normalized place. Provide exactly one identifier.
| Parameter | Type | Description |
|---|---|---|
| place_id | string | Google place ID. |
| data_id | string | Google Maps data ID. |
| url | string | Supported HTTPS Google Maps URL. |
curl --get "$BASE_URL/api/maps/place" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "place_id=ChIJ..."Place response fields
| Field | Type | Description |
|---|---|---|
| place_id / data_id | string | Google place / data identifiers. Reuse either as place_id or data_id for the Place and Reviews endpoints. |
| maps_url | string | Canonical HTTPS Google Maps URL for the place. |
| name | string | Business name. |
| description | string | null | Short public description when Google provides one. |
| categories | array | Business category labels, e.g. ["Coffee shop", "Cafe"]. |
| address | object | Structured address with street, city, state, postal_code, borough, country, and a joined formatted string. |
| coordinates | object | latitude and longitude. |
| phone | string | null | Public phone number. |
| website | string | null | Public website URL. |
| rating | number | null | Star rating from 0 to 5. |
| review_count | integer | null | Number of public reviews Google reports. |
| review_distribution | object | null | Review counts by star band, keys 1 through 5. |
| opening_hours | object | null | Weekly hours and current open/closed state when available. |
| popular_times | object | null | Hourly popularity by day when Google provides it. |
| business_status | string | null | Current state, e.g. Open, Closed, Temporarily closed, or Permanently closed. |
| price_range | string | null | Relative price level when Google reports one. |
| timezone | string | null | IANA timezone, e.g. America/New_York. |
| plus_code | string | null | Open Location Code when available. |
| amenities / service_options | array | null | Service options (takeout, delivery, outdoor seating, …) when Google provides them. |
| links | object | null | Reservation booking, order_online, and menu URLs. |
| ownership | object | null | claimed boolean, owner_name, and owner_id. |
| images / cover_image / image_count | array / string / integer | Public photo URLs, the chosen cover image, and the number of images. |
| detail_status | string | complete when enrichment finished, or core_only when only the ranked core record was returned within the request deadline. |
Any field can be null when Google does not expose it for that place — absence is honest, never fabricated.
Google Maps Reviews
Returns up to 20 public reviews per call. Provide exactly one place identifier and reuse the returned opaque token for the next page.
| Parameter | Type | Description |
|---|---|---|
| place_id / data_id / url | string | Exactly one place identifier. |
| sort | string | relevant, newest, highest, or lowest. |
| page_token | string | Opaque token returned by the previous response. Do not decode or edit it. |
curl --get "$BASE_URL/api/maps/reviews" \
-H "X-API-Key: YOUR_API_KEY" \
--data-urlencode "place_id=ChIJ..." \
--data-urlencode "sort=newest"Review response fields
| Field | Type | Description |
|---|---|---|
| review_id / review_url | string | null | Public review identifier and URL. |
| rating | integer | null | Reviewer star rating from 1 to 5. |
| text | object | null | original and, when Google provides it, a translated version. |
| published_at / updated_at | string | null | ISO-8601 timestamps when Google exposes them. |
| relative_date | string | null | Google's relative date label, e.g. a month ago. |
| images | array | Public review photo URLs. |
| detailed_ratings | object | null | Per-aspect scores when Google provides them. |
| owner_response | object | null | original / translated text plus published_at / updated_at when the owner replied. |
| reviewer | object | null | Public reviewer info: name, id, url, profile_photo, review_count, and local_guide boolean. |
Review fields can be null when Google does not expose them for a given review. Absolute review dates are not always available; relative_date is the reliable label.
Search Engines
Serpent API supports five search engines: Google (default), Bing, Yahoo, and DuckDuckGo. Use the engine parameter on any SERP endpoint to choose.
| Engine | Value | Supported Endpoints |
|---|---|---|
google |
Web, News, Images, Videos, Shopping. Includes ads, PAA, featured snippets, optional AI overviews, and inline videos where present. | |
| Bing | bing |
Web, News, Images, Videos. Includes ads, PAA, and inline videos where present. |
| Yahoo | yahoo |
Web, News, Images, Videos, Shopping. Includes ads, PAA, and inline videos where present. |
| DuckDuckGo | ddg |
Web, News, Images, Videos. Includes ads and related searches. |
| Brave | brave |
Web, News, Images, Videos. Includes related searches and Brave's AI digest (exposed as aiOverview). |
Country/Region Support
Get localized search results by specifying a country code. This affects the language, regional rankings, and availability of results.
Returns a list of all supported country codes programmatically. This endpoint does not require an API key.
Example Response
{
"success": true,
"count": 112,
"countries": [
{ "code": "us", "region": "us" },
{ "code": "uk", "region": "uk" },
...
]
}
Supported Countries
We support 112 countries for localized search results (gb is an alias for uk).
gb is accepted as an alias for uk — both work and return United Kingdom results.Popular Countries
| Code | Country | Code | Country |
|---|---|---|---|
us | United States | uk | United Kingdom |
ca | Canada | au | Australia |
de | Germany | fr | France |
in | India | jp | Japan |
View All Supported Countries
English-Speaking (12)
| Code | Country | Code | Country |
|---|---|---|---|
us | United States | uk | United Kingdom |
gb | United Kingdom (alias) | ca | Canada |
au | Australia | nz | New Zealand |
ie | Ireland | sg | Singapore |
ph | Philippines | my | Malaysia |
in | India | za | South Africa |
Western Europe (10)
| Code | Country | Code | Country |
|---|---|---|---|
de | Germany | fr | France |
es | Spain | it | Italy |
nl | Netherlands | be | Belgium |
at | Austria | ch | Switzerland |
pt | Portugal | lu | Luxembourg |
Nordics (5)
| Code | Country | Code | Country |
|---|---|---|---|
se | Sweden | no | Norway |
dk | Denmark | fi | Finland |
is | Iceland |
Eastern Europe (18)
| Code | Country | Code | Country |
|---|---|---|---|
pl | Poland | ro | Romania |
cz | Czech Republic | sk | Slovakia |
hu | Hungary | bg | Bulgaria |
hr | Croatia | si | Slovenia |
ee | Estonia | lv | Latvia |
lt | Lithuania | ua | Ukraine |
ru | Russia | gr | Greece |
tr | Turkey | ba | Bosnia and Herzegovina |
mk | North Macedonia | ge | Georgia |
Asia (14)
| Code | Country | Code | Country |
|---|---|---|---|
jp | Japan | tw | Taiwan |
hk | Hong Kong | kr | South Korea |
cn | China | id | Indonesia |
th | Thailand | vn | Vietnam |
bd | Bangladesh | lk | Sri Lanka |
mm | Myanmar | kh | Cambodia |
la | Laos | np | Nepal |
Middle East (14)
| Code | Country | Code | Country |
|---|---|---|---|
il | Israel | sa | Saudi Arabia |
pk | Pakistan | ae | United Arab Emirates |
qa | Qatar | kw | Kuwait |
om | Oman | bh | Bahrain |
jo | Jordan | lb | Lebanon |
iq | Iraq | ir | Iran |
sy | Syria | ye | Yemen |
North Africa (5)
| Code | Country | Code | Country |
|---|---|---|---|
eg | Egypt | ma | Morocco |
tn | Tunisia | ly | Libya |
dz | Algeria |
Sub-Saharan Africa (10)
| Code | Country | Code | Country |
|---|---|---|---|
ng | Nigeria | ke | Kenya |
gh | Ghana | et | Ethiopia |
tz | Tanzania | ug | Uganda |
zw | Zimbabwe | bw | Botswana |
na | Namibia | sn | Senegal |
Latin America (18)
| Code | Country | Code | Country |
|---|---|---|---|
mx | Mexico | br | Brazil |
ar | Argentina | cl | Chile |
co | Colombia | pe | Peru |
ve | Venezuela | ec | Ecuador |
bo | Bolivia | py | Paraguay |
cr | Costa Rica | pa | Panama |
do | Dominican Republic | gt | Guatemala |
hn | Honduras | ni | Nicaragua |
sv | El Salvador | pr | Puerto Rico |
Caribbean (3)
| Code | Country | Code | Country |
|---|---|---|---|
cu | Cuba | jm | Jamaica |
tt | Trinidad and Tobago |
Other (3)
| Code | Country | Code | Country |
|---|---|---|---|
mt | Malta | am | Armenia |
az | Azerbaijan |
All 112 codes shown above. Use GET /api/countries for the programmatic list.
Example: Search in Germany
curl "https://apiserpent.com/api/search?q=beste+seo+tools&country=de" \
-H "X-API-Key: sk_live_your_api_key"
Language Support
Restrict search results to a specific language by passing a 2-letter ISO 639-1 code to the language parameter. Supported by Google, Yahoo / Bing, and DuckDuckGo across web, news, and image search.
language filters by content language; country sets the geographic search context. Combine both for the best localization (e.g., country=de&language=de for German searches in Germany).Common Languages
| Code | Language | Code | Language |
|---|---|---|---|
en | English | es | Spanish |
fr | French | de | German |
pt | Portuguese | it | Italian |
ja | Japanese | zh | Chinese |
ar | Arabic | hi | Hindi |
View All Supported Languages
Germanic
| Code | Language | Code | Language |
|---|---|---|---|
en | English | de | German |
nl | Dutch | sv | Swedish |
da | Danish | no | Norwegian |
is | Icelandic | af | Afrikaans |
Romance
| Code | Language | Code | Language |
|---|---|---|---|
es | Spanish | fr | French |
it | Italian | pt | Portuguese |
ro | Romanian | ca | Catalan |
gl | Galician |
Slavic
| Code | Language | Code | Language |
|---|---|---|---|
ru | Russian | pl | Polish |
cs | Czech | sk | Slovak |
uk | Ukrainian | bg | Bulgarian |
sr | Serbian | hr | Croatian |
bs | Bosnian | mk | Macedonian |
sl | Slovenian |
Baltic / Celtic / Other European
| Code | Language | Code | Language |
|---|---|---|---|
lt | Lithuanian | lv | Latvian |
el | Greek | sq | Albanian |
cy | Welsh | ga | Irish |
eu | Basque | mt | Maltese |
Uralic / Turkic
| Code | Language | Code | Language |
|---|---|---|---|
fi | Finnish | et | Estonian |
hu | Hungarian | tr | Turkish |
az | Azerbaijani | kk | Kazakh |
uz | Uzbek |
Indic / Iranian
| Code | Language | Code | Language |
|---|---|---|---|
hi | Hindi | bn | Bengali |
ur | Urdu | pa | Punjabi |
mr | Marathi | gu | Gujarati |
ne | Nepali | si | Sinhala |
fa | Persian | ps | Pashto |
ku | Kurdish |
Dravidian
| Code | Language | Code | Language |
|---|---|---|---|
ta | Tamil | te | Telugu |
kn | Kannada | ml | Malayalam |
East & Southeast Asian
| Code | Language | Code | Language |
|---|---|---|---|
zh | Chinese | ja | Japanese |
ko | Korean | my | Burmese |
vi | Vietnamese | th | Thai |
km | Khmer | lo | Lao |
id | Indonesian | ms | Malay |
tl | Filipino |
Semitic / African
| Code | Language | Code | Language |
|---|---|---|---|
ar | Arabic | he | Hebrew |
am | Amharic | sw | Swahili |
ha | Hausa | yo | Yoruba |
ig | Igbo | zu | Zulu |
xh | Xhosa | so | Somali |
Caucasian
| Code | Language | Code | Language |
|---|---|---|---|
ka | Georgian | hy | Armenian |
Pass any valid ISO 639-1 code as language. Engine support varies — Google has the broadest coverage.
Example: French-Language Search in France
curl "https://apiserpent.com/api/search?q=meilleurs+outils+seo&country=fr&language=fr" \
-H "X-API-Key: sk_live_your_api_key"
Check Status
Check your API key status, credit balance, shared free-call allowance, and pricing tier.
Example Response
{
"success": true,
"data": {
"plan": "paid",
"credits": 45.50,
"costPerSearch": 0.0006,
"priceTier": "default",
"freeSearches": {
"used": 4,
"limit": 10,
"remaining": 6,
"scope": "all endpoints"
}
}
}
Pricing
Pay-as-you-go pricing with three tiers that follow your live credit balance. Core categories use 10×/20× Growth/Scale discounts; Maps uses the standard 10%/30% discount.
Pricing Tiers
| Tier | Balance | Discount |
|---|---|---|
| Default | $0 | Full price |
| Growth | $100 | 10× off core categories; 10% off standard categories (Images, Videos, Shopping, Instagram, Maps, LinkedIn, Jobs) |
| Scale | $500 | 20× off core categories; 30% off standard categories (Images, Videos, Shopping, Instagram, Maps, LinkedIn, Jobs) |
Per-Category Pricing (per 1,000 calls — Default / Growth / Scale)
| Category | Default | Growth ($100+) | Scale ($500+) |
|---|---|---|---|
| Google SERP (Quick + Deep, all engines, any pages) | $0.60 | $0.06 | $0.03 |
| News (all engines) | $0.20 | $0.02 | $0.01 |
| Images (all engines) | $0.60 | $0.54 | $0.42 |
| Videos (all engines) | $0.60 | $0.54 | $0.42 |
| Shopping (Google + Yahoo) | $0.60 | $0.54 | $0.42 |
| YouTube (search/video/channel/playlist) | $0.20 | $0.02 | $0.01 |
| Instagram profile | $1.00 | $0.90 | $0.70 |
Instagram profile + recent posts (include_posts=true) | $2.00 | $1.80 | $1.40 |
Instagram profile + post details (include_post_details=true) | $4.00 | $3.60 | $2.80 |
| LinkedIn company | $3.00 | $2.70 | $2.10 |
| LinkedIn jobs / job / profile | $0.50 | $0.45 | $0.35 |
| LinkedIn full profile | $4.00 | $3.60 | $2.80 |
| LinkedIn search / posts | $1.00 | $0.90 | $0.70 |
| Maps Quick (up to 20 places) | $15.00 | $13.50 | $10.50 |
| Maps Deep (up to 100 places) | $75.00 | $67.50 | $52.50 |
| Maps Place (one place) | $1.50 | $1.35 | $1.05 |
| Maps Reviews (up to 20 reviews) | $3.00 | $2.70 | $2.10 |
| AI Ranking — single LLM | $20.00 | $2.00 | $1.00 |
| AI Ranking — all 4 combined | $40.00 | $4.00 | $2.00 |
GET /api/pricing (no API key required). New accounts get 10 free lifetime calls, shared across every endpoint — Web Search, News, Images, Videos, Shopping, AI Rank, LinkedIn, Maps, YouTube, and Instagram.Response Format
All responses are JSON. Every response includes a success boolean. Search responses include engine, country, and a meta object with timing info.
Full Response (Web Search)
The default format=full response includes all available data:
{
"success": true,
"query": "best seo tools",
"engine": "google",
"country": "us",
"pages": 5,
"results": {
"organic": [{ "position", "title", "url", "snippet", "displayedUrl" }],
"relatedSearches": [{ "query": "free seo tools" }, ...],
"ads": { "top": [], "bottom": [], "totalCount": 0 },
"peopleAlsoAsk": [],
"featuredSnippet": null, // Google only
"aiOverview": null, // Google Deep with include_aio=true
"richSnippets": [],
"videos": [], // Google, Yahoo/Bing
"shopping": []
},
"metadata": {
"totalOrganicResults": 50,
"hasAds": false,
"hasRelatedSearches": true,
"hasPeopleAlsoAsk": false,
"hasVideos": false,
"hasShopping": false,
"hasFeaturedSnippet": false,
"hasAiOverview": false,
"source": "google"
},
"meta": { "totalOrganic", "requestedNum", "elapsed", "timestamp" }
}
featuredSnippet, optional aiOverview, and videos data. Yahoo/Bing includes peopleAlsoAsk and videos. DDG includes ads and relatedSearches. All fields are always present in the response (empty arrays/null when not available).Simple Response
Use format=simple for a lightweight response. Available on all six search endpoints (quick search, deep web search, news, images, videos, shopping).
format=simple, the results field is a flat array of lightweight endpoint-specific items — not an object. With format=full (the default), results is an object with endpoint-specific arrays such as organic, articles, images, videos, or shopping. A safe web-search accessor is: const organic = Array.isArray(r.results) ? r.results : (r.results?.organic || []);
format only changes the response shape; it does not change endpoint pricing. To use the lower-priced quick contract, choose /api/search/quick instead of /api/search.
Web Search (/api/search)
Returns position, title, url. With pixel_position=true, each item also carries a pixel_position integer and a pixel_box object (see Pixel Position):
{
"success": true,
"query": "best seo tools",
"engine": "google",
"country": "us",
"results": [
{ "position": 1, "title": "...", "url": "..." },
// with pixel_position=true:
{
"position": 2,
"title": "...",
"url": "...",
"pixel_position": 847,
"pixel_box": { "x": 180, "y": 847, "w": 600, "h": 96 }
}
],
"meta": { "total": 50, "requestedNum": 50, "elapsed": "2450ms" }
}
News Search (/api/news)
Returns position, title, url, source:
{
"success": true,
"query": "artificial intelligence",
"type": "news",
"engine": "google",
"country": "us",
"results": [
{ "position": 1, "title": "...", "url": "...", "source": "..." }
],
"meta": { "total": 20, "elapsed": "1800ms" }
}
Image Search (/api/images)
Returns position, title, original, thumbnail:
{
"success": true,
"query": "mountain landscape",
"type": "images",
"engine": "google",
"country": "us",
"results": [
{ "position": 1, "title": "...", "original": "...", "thumbnail": "..." }
],
"meta": { "total": 50, "elapsed": "1200ms" }
}
Error Codes
All error responses include an error field with a human-readable message. Some errors also include a message field with additional details.
| Code | Meaning | Description |
|---|---|---|
| 400 | Bad Request | Missing or invalid parameters (e.g., no q param, invalid engine) |
| 400 | num must be a positive integer | The num parameter must be a positive integer (1 or greater). Values like 0, -1, or non-numeric strings are rejected. |
| 401 | Unauthorized | Invalid or missing API key |
| 402 | Payment Required | Insufficient credits. Free searches exhausted and no credit balance. |
| 404 | Not Found | Endpoint does not exist |
| 429 | Too Many Requests | Rate limit exceeded. See Rate Limits for tier-specific limits. |
| 500 | Server Error | Internal error — try again or contact support |
| 502 | Bad Gateway | We are experiencing unusually high request volume. Please try again later. |
Error Response Example
// 400 Bad Request
{ "error": "Query parameter \"q\" is required" }
// 401 Unauthorized
{ "error": "Unauthorized", "message": "API key required. Provide X-API-Key header or api_key query parameter." }
// 402 Payment Required
{ "error": "Payment Required", "message": "Insufficient credits", "credits": 0, "costPerSearch": 0.0001 }
// 503 Service Unavailable
{ "success": false, "error": "Temporarily unavailable", "message": "Please try again later." }
Rate Limits
Rate limits are per account (shared across all your API keys) and scale with your current credit balance. Every account gets four ceilings — max concurrent in-flight requests, and max requests per minute, per hour, and per day. Higher brackets also get higher priority in the processing queue under load.
| Bracket | Concurrent | Per minute | Per hour | Per day | Queue priority |
|---|---|---|---|---|---|
| Free — no deposit | 1 | 10 | 100 | 500 | Lowest |
| Default — balance < $100 | 3–20 | 20–100 | 200–1,000 | 1,000–unlimited* | Standard |
| Growth — balance $100–$499 | 10–100 | 100–1,000 | 1,000–10,000 | 8,000–unlimited* | High |
| Scale — balance $500+ | 100–1,000 | 500–5,000 | 5,000–50,000 | 30,000–unlimited* | Highest |
429 response names which window you hit and includes a Retry-After header — back off and retry. Your bracket follows your live credit balance — topping up raises your limits immediately; spending down can lower them. Pricing tiers are a separate dimension: they're locked in by a one-time deposit and don't move with your balance.| Other limits | Value |
|---|---|
| Demo API key | 10/hour per IP |
Response Timing
Response time varies by endpoint, engine, requested depth, target country, and current platform load. The Playground shows live elapsed time for individual requests.
Need higher rate limits?
Published limits are standard defaults. If your workload needs more — higher concurrency, /min, /hour, or /day allocations — contact us for a reviewed custom-limit allocation.
Code Examples
JavaScript / Node.js
const API_KEY = 'sk_live_your_api_key';
const BASE = 'https://apiserpent.com';
const headers = { 'X-API-Key': API_KEY };
// Quick web search (free-tier eligible)
async function quickSearch(query, engine = 'google') {
const res = await fetch(
`${BASE}/api/search/quick?q=${encodeURIComponent(query)}&engine=${engine}`,
{ headers }
);
return (await res.json()).results.organic;
}
// Deep web search (up to 100 results)
async function webSearch(query, options = {}) {
const params = new URLSearchParams({
q: query,
num: options.num || 10,
engine: options.engine || 'google',
country: options.country || 'us',
});
const res = await fetch(`${BASE}/api/search?${params}`, { headers });
const data = await res.json();
if (!data.success) throw new Error(data.error);
return data.results.organic;
}
// News search
async function newsSearch(query, num = 20) {
const res = await fetch(
`${BASE}/api/news?q=${encodeURIComponent(query)}&num=${num}`,
{ headers }
);
return (await res.json()).results.articles;
}
// Video search
async function videoSearch(query, engine = 'ddg') {
const res = await fetch(
`${BASE}/api/videos?q=${encodeURIComponent(query)}&engine=${engine}`,
{ headers }
);
return (await res.json()).results.videos;
}
// AI Ranking check
async function aiRank(keyword, domain) {
const res = await fetch(
`${BASE}/api/ai/rank?keyword=${encodeURIComponent(keyword)}&domain=${domain}`,
{ headers }
);
return (await res.json());
}
// YouTube search (free-tier eligible)
async function ytSearch(query, num = 10) {
const res = await fetch(
`${BASE}/api/social/youtube/search?q=${encodeURIComponent(query)}&num=${num}`,
{ headers }
);
return (await res.json());
}
// Google Maps quick place search (free-tier eligible)
async function mapsQuickSearch(query, options = {}) {
const params = new URLSearchParams({
q: query,
location: options.location || '',
country: options.country || 'us',
});
const res = await fetch(`${BASE}/api/maps/search/quick?${params}`, { headers });
const data = await res.json();
return data.places;
}
// Google Maps place details
async function mapsPlace(placeId) {
const res = await fetch(`${BASE}/api/maps/place?place_id=${encodeURIComponent(placeId)}`, { headers });
return (await res.json()).place;
}
// Google Maps reviews (paginate with next_page_token)
async function mapsReviews(placeId, { sort = 'relevant', pageToken } = {}) {
const params = new URLSearchParams({ place_id: placeId, sort });
if (pageToken) params.set('page_token', pageToken);
const res = await fetch(`${BASE}/api/maps/reviews?${params}`, { headers });
return await res.json();
}
// Usage
const quick = await quickSearch('weather today');
const deep = await webSearch('best seo tools', { num: 50 });
const news = await newsSearch('artificial intelligence');
const videos = await videoSearch('python tutorial');
const ranking = await aiRank('best crm software', 'hubspot.com');
const yt = await ytSearch('machine learning');
const places = await mapsQuickSearch('coffee shops', { location: 'New York, NY' });
const place = await mapsPlace(places[0].place_id);
const reviews = await mapsReviews(places[0].place_id, { sort: 'newest' });
Python
import requests
API_KEY = 'sk_live_your_api_key'
BASE = 'https://apiserpent.com'
HEADERS = {'X-API-Key': API_KEY}
# Quick search (free-tier eligible)
def quick_search(query, engine='google'):
resp = requests.get(f'{BASE}/api/search/quick', headers=HEADERS,
params={'q': query, 'engine': engine})
return resp.json()['results']['organic']
# Deep web search (up to 100 results)
def web_search(query, num=10, engine='google', country='us'):
resp = requests.get(f'{BASE}/api/search', headers=HEADERS,
params={'q': query, 'num': num, 'engine': engine, 'country': country})
data = resp.json()
if not data.get('success'):
raise Exception(data.get('error', 'Search failed'))
return data['results']['organic']
# News search
def news_search(query, num=20):
resp = requests.get(f'{BASE}/api/news', headers=HEADERS,
params={'q': query, 'num': num})
return resp.json()['results']['articles']
# Image search
def image_search(query, num=50):
resp = requests.get(f'{BASE}/api/images', headers=HEADERS,
params={'q': query, 'num': num})
return resp.json()['results']['images']
# Video search
def video_search(query, engine='ddg'):
resp = requests.get(f'{BASE}/api/videos', headers=HEADERS,
params={'q': query, 'engine': engine})
return resp.json()['results']['videos']
# AI Ranking
def ai_rank(keyword, domain=None, engines='claude,chatgpt'):
params = {'keyword': keyword, 'engines': engines}
if domain:
params['domain'] = domain
resp = requests.get(f'{BASE}/api/ai/rank', headers=HEADERS, params=params)
return resp.json()
# YouTube search (free-tier eligible)
def yt_search(query, num=10):
resp = requests.get(f'{BASE}/api/social/youtube/search', headers=HEADERS,
params={'q': query, 'num': num})
return resp.json()
# Instagram profile (free-tier eligible)
def ig_profile(username):
resp = requests.get(f'{BASE}/api/social/instagram/profile', headers=HEADERS,
params={'username': username})
return resp.json()
# Google Maps quick place search (free-tier eligible)
def maps_quick_search(query, location=None, country='us'):
params = {'q': query, 'country': country}
if location:
params['location'] = location
resp = requests.get(f'{BASE}/api/maps/search/quick', headers=HEADERS, params=params)
return resp.json()['places']
# Google Maps place details
def maps_place(place_id):
resp = requests.get(f'{BASE}/api/maps/place', headers=HEADERS,
params={'place_id': place_id})
return resp.json()['place']
# Google Maps reviews (paginate with next_page_token)
def maps_reviews(place_id, sort='relevant', page_token=None):
params = {'place_id': place_id, 'sort': sort}
if page_token:
params['page_token'] = page_token
resp = requests.get(f'{BASE}/api/maps/reviews', headers=HEADERS, params=params)
return resp.json()
# Usage
results = web_search('best seo tools', num=50, engine='google')
news = news_search('AI breakthroughs')
images = image_search('sunset beach')
videos = video_search('python tutorial')
ranking = ai_rank('best crm software', domain='hubspot.com')
yt = yt_search('machine learning')
ig = ig_profile('natgeo')
places = maps_quick_search('coffee shops', location='New York, NY')
place = maps_place(places[0]['place_id'])
reviews = maps_reviews(places[0]['place_id'], sort='newest')
cURL
# Quick search (free-tier eligible)
curl "https://apiserpent.com/api/search/quick?q=weather+today&engine=google" \
-H "X-API-Key: sk_live_your_api_key"
# Deep web search (30 results from Google in Germany)
curl "https://apiserpent.com/api/search?q=beste+seo+tools&num=30&engine=google&country=de" \
-H "X-API-Key: sk_live_your_api_key"
# News search with freshness filter
curl "https://apiserpent.com/api/news?q=technology&num=20&freshness=w" \
-H "X-API-Key: sk_live_your_api_key"
# Image search with filters
curl "https://apiserpent.com/api/images?q=mountain+landscape&num=50&size=large" \
-H "X-API-Key: sk_live_your_api_key"
# Video search
curl "https://apiserpent.com/api/videos?q=python+tutorial&engine=ddg&duration=medium" \
-H "X-API-Key: sk_live_your_api_key"
# AI Ranking (Claude + ChatGPT)
curl "https://apiserpent.com/api/ai/rank?keyword=best+crm+software&domain=hubspot.com&engines=claude,chatgpt" \
-H "X-API-Key: sk_live_your_api_key"
# Single AI engine ranking
curl "https://apiserpent.com/api/ai/rank/gemini?keyword=best+seo+tools" \
-H "X-API-Key: sk_live_your_api_key"
# YouTube search (free-tier eligible)
curl "https://apiserpent.com/api/social/youtube/search?q=machine+learning&num=10" \
-H "X-API-Key: sk_live_your_api_key"
# YouTube video details
curl "https://apiserpent.com/api/social/youtube/video?id=dQw4w9WgXcQ" \
-H "X-API-Key: sk_live_your_api_key"
# YouTube channel details
curl "https://apiserpent.com/api/social/youtube/channel?handle=@mkbhd&include_videos=true" \
-H "X-API-Key: sk_live_your_api_key"
# Instagram profile (free-tier eligible)
curl "https://apiserpent.com/api/social/instagram/profile?username=natgeo" \
-H "X-API-Key: sk_live_your_api_key"
# Check credits and usage
curl "https://apiserpent.com/api/status" \
-H "X-API-Key: sk_live_your_api_key"
# Get pricing (no API key required)
curl "https://apiserpent.com/api/pricing"