<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: API Serpent</title>
    <description>The latest articles on DEV Community by API Serpent (@api_serpent).</description>
    <link>https://dev.to/api_serpent</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4018935%2Fd0c32070-56f3-45fc-a4f7-d63ecef90177.png</url>
      <title>DEV Community: API Serpent</title>
      <link>https://dev.to/api_serpent</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/api_serpent"/>
    <language>en</language>
    <item>
      <title>Building with eBay Data in 2026 — 6 Endpoints, 10 Markets, and the Billing Trap Nobody Warns You About</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Tue, 13 Oct 2026 06:24:15 +0000</pubDate>
      <link>https://dev.to/api_serpent/building-with-ebay-data-in-2026-6-endpoints-10-markets-and-the-billing-trap-nobody-warns-you-3afp</link>
      <guid>https://dev.to/api_serpent/building-with-ebay-data-in-2026-6-endpoints-10-markets-and-the-billing-trap-nobody-warns-you-3afp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frii8jqweo569um5phyj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frii8jqweo569um5phyj4.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;I want to start this post with the single most important thing to understand about eBay data APIs before you write a line of code.&lt;/p&gt;

&lt;p&gt;A search request and a product record are not the same thing.&lt;/p&gt;

&lt;p&gt;This sounds obvious, but it's responsible for more eBay API budget surprises than almost any other mistake. I'll explain the distinction, then show you how to use each of the six operations &lt;a href="https://apiserpent.com/ebay-api" rel="noopener noreferrer"&gt;Serpent API's eBay endpoint&lt;/a&gt; exposes — with real code for each one.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Data Model
&lt;/h2&gt;

&lt;p&gt;eBay's public data has a natural hierarchy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search query
  └── Listing page (contains N listing cards)
        └── Listing card (title, price, condition, seller, item link)
              └── Item detail (images, specifics, availability, description)
                    └── Seller profile (identity, feedback score, positive rate)
                          └── Seller listings (inventory, page by page)
                          └── Seller feedback (buyer comments, ratings)
                          └── Product reviews (review text, rating, author)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each layer is a separate API call. Each has its own rate. The mistake teams make is assuming that a "search" returns all of this. It doesn't — search returns the top level only. Enrichment requires additional calls per item.&lt;/p&gt;

&lt;p&gt;This isn't a flaw — it's correct data architecture. You shouldn't pay for description data on items you're not interested in. But it means your cost model needs to account for every layer your application touches.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install requests python-dotenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# .env
SERPENT_API_KEY=your_key_here
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# ebay_client.py
import requests
import os

API_KEY = os.getenv("SERPENT_API_KEY")
BASE = "https://apiserpent.com/api/ebay"

HEADERS = {"X-API-Key": API_KEY}

def get(endpoint, params):
    r = requests.get(f"{BASE}{endpoint}", params=params, headers=HEADERS, timeout=30)
    r.raise_for_status()
    return r.json()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Operation 1 — Search Listings
&lt;/h2&gt;

&lt;p&gt;GET /api/ebay/search returns a page of listings for a keyword on a specified marketplace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def search_listings(query, marketplace="EBAY_US", locale="en-US", page=1):
    """
    Returns listing cards: title, price, condition,
    shipping, seller identity, item link.

    10 supported marketplace/locale pairs:
    EBAY_US/en-US  EBAY_GB/en-GB  EBAY_DE/de-DE
    EBAY_AU/en-AU  EBAY_IT/it-IT  EBAY_FR/fr-FR
    EBAY_CA/en-CA  EBAY_ES/es-ES  EBAY_NL/nl-NL
    EBAY_PL/pl-PL

    Rate: $0.40/1K calls at Default tier
    """
    return get("/search", {
        "q": query,
        "marketplace_id": marketplace,
        "locale": locale,
        "page": page
    })

# Example
results = search_listings("vintage camera", "EBAY_DE", "de-DE")
for listing in results.get("listings", []):
    print(listing["title"], listing["price"], listing["currency"])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the response contains:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;title — listing title as displayed&lt;/li&gt;
&lt;li&gt;price / currency — displayed price in the marketplace's currency&lt;/li&gt;
&lt;li&gt;condition — New, Used, Refurbished, For parts, etc.&lt;/li&gt;
&lt;li&gt;shipping — shipping cost and type if displayed&lt;/li&gt;
&lt;li&gt;seller — seller username&lt;/li&gt;
&lt;li&gt;item_url — full item URL (use as item ID for subsequent calls)&lt;/li&gt;
&lt;li&gt;item_id — eBay item ID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The page trap: a search returns one page. If eBay shows 48 listings on page 1, you get 48 rows. If 12 are sponsored/promoted and you filter them, you have 36. Cost is per page request, not per usable listing. Always measure yield on your actual keywords before budgeting at scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operation 2 — Item Details
&lt;/h2&gt;

&lt;p&gt;GET /api/ebay/item returns structured data for a specific item by ID or URL.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_item(item_id, include_description=False):
    """
    Returns price, images, item specifics, availability, seller.

    Add include_description=1 to get the full seller HTML description.
    Description calls: $1.50/1K (3.75x the standard rate).
    If description unavailable but core item exists, standard rate applies.

    Use include_description only when your pipeline needs it —
    most price monitoring workflows don't.
    """
    params = {"item_id": item_id}
    if include_description:
        params["include_description"] = 1
    return get("/item", params)

# Price check without description (standard rate)
item = get_item("v1|123456789012|0")
print(item["price"], item["currency"], item["condition"])

# With full description (description rate)
item_full = get_item("v1|123456789012|0", include_description=True)
print(item_full.get("description", "")[:200])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When to use include_description:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Product detail pages that show the seller's own copy&lt;/li&gt;
&lt;li&gt;Condition verification that requires reading the description text&lt;/li&gt;
&lt;li&gt;Content analysis pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When NOT to use it:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Price monitoring (price is in the core item)&lt;/li&gt;
&lt;li&gt;Stock tracking (availability is in the core item)&lt;/li&gt;
&lt;li&gt;Search enrichment loops (you'd pay 3.75× for data you don't use)&lt;/li&gt;
&lt;li&gt;Operation 3 — Seller Profile&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;GET /api/ebay/seller returns identity and reputation data for a seller username.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_seller_profile(seller_username):
    """
    Returns: seller identity, feedback score,
    positive feedback rate, profile link.

    Useful for: trust scoring, seller monitoring,
    marketplace research, fraud detection signals.
    Rate: $0.40/1K calls
    """
    return get("/seller", {"seller": seller_username})

profile = get_seller_profile("vintage_camera_shop")
print(
    profile["feedback_score"],
    profile["positive_feedback_rate"],
    profile["member_since"]
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Operation 4 — Seller Inventory
&lt;/h2&gt;

&lt;p&gt;GET /api/ebay/seller/items reads a seller's public listings, one page at a time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_seller_inventory(seller_username, page=1):
    """
    Returns structured item cards from a seller's active listings.
    Paginate to collect the full inventory.

    For large inventories (100+ pages), use a background job
    when listed in the API catalog — only served pages are charged.
    Rate: $0.40/1K calls or served pages
    """
    return get("/seller/items", {
        "seller": seller_username,
        "page": page
    })

def collect_all_seller_items(seller_username, max_pages=10):
    """Collect a seller's full inventory page by page."""
    items = []
    for page in range(1, max_pages + 1):
        data = get_seller_inventory(seller_username, page)
        page_items = data.get("items", [])
        if not page_items:
            break
        items.extend(page_items)
        print(f"Page {page}: {len(page_items)} items")
    return items
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Direct calls vs. background jobs: For a seller with 400 listings across 16 pages, a direct loop makes 16 synchronous calls. A background job submits once, handles retries internally, and charges only for pages that complete. If pages 15–16 don't complete, you're not charged for them. For large inventories, background jobs are both cheaper and more reliable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operation 5 — Product Reviews
&lt;/h2&gt;

&lt;p&gt;GET /api/ebay/product/reviews returns buyer reviews for an eBay catalog product ID.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_product_reviews(product_id):
    """
    Returns: review text, star rating, author username, date.
    Note: requires an eBay catalog product_id (e-pid),
    not a listing item_id. These are different identifiers.

    Rate: $0.40/1K calls
    """
    return get("/product/reviews", {"product_id": product_id})

reviews = get_product_reviews("235190997")
for review in reviews.get("reviews", []):
    print(review["rating"], review["title"], review["date"])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The product_id vs item_id distinction: eBay has two identifier systems. An item_id identifies a specific listing from a specific seller. A catalog product ID (often called e-pid or epid) identifies a standardized product in eBay's catalog — the same physical product sold by many sellers. Reviews are attached to the catalog product, not to individual listings. If your workflow starts from search results, you'll need to extract the product ID from the item detail before calling reviews.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operation 6 — Seller Feedback
&lt;/h2&gt;

&lt;p&gt;GET /api/ebay/seller/feedback returns feedback entries left by buyers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def get_seller_feedback(seller_username, page=1):
    """
    Returns: feedback entries with buyer username,
    positive/negative/neutral rating, comment text, date.

    Useful for: sentiment analysis, seller trust scoring,
    fraud signals, marketplace research.
    Rate: $0.40/1K calls
    """
    return get("/seller/feedback", {
        "seller": seller_username,
        "page": page
    })

feedback = get_seller_feedback("vintage_camera_shop")
for entry in feedback.get("feedback", []):
    print(entry["rating"], entry["comment"][:80])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  A Complete Price Monitoring Pipeline
&lt;/h2&gt;

&lt;p&gt;Here's how the operations compose into a real workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import time
from datetime import datetime

def run_price_monitor(keywords, marketplaces, output_file="prices.jsonl"):
    """
    For each keyword × marketplace pair:
    1. Search listings (discovery)
    2. Get item detail for top N results (enrichment)
    3. Log price, condition, seller, timestamp

    Cost at Default tier ($0.40/1K):
    - 1 search call + N item calls per keyword/market pair
    - For 10 keywords × 3 markets × top-5 items:
      30 search calls + 150 item calls = 180 calls total
      180 / 1000 × $0.40 = $0.072 per run
    """
    import json

    results = []

    for keyword in keywords:
        for marketplace_id, locale in marketplaces:
            # Layer 1: Search
            search_data = search_listings(keyword, marketplace_id, locale)
            listings = search_data.get("listings", [])[:5]  # top 5 only

            for listing in listings:
                item_id = listing.get("item_id")
                if not item_id:
                    continue

                # Layer 2: Item detail (no description — not needed for price monitoring)
                try:
                    item = get_item(item_id)
                    record = {
                        "timestamp": datetime.utcnow().isoformat(),
                        "keyword": keyword,
                        "marketplace": marketplace_id,
                        "item_id": item_id,
                        "title": listing["title"],
                        "search_price": listing.get("price"),
                        "item_price": item.get("price"),
                        "currency": item.get("currency"),
                        "condition": item.get("condition"),
                        "seller": listing.get("seller"),
                        "availability": item.get("availability"),
                    }
                    results.append(record)

                    # Write incrementally so partial runs aren't lost
                    with open(output_file, "a") as f:
                        f.write(json.dumps(record) + "\n")

                except Exception as e:
                    print(f"Item {item_id} failed: {e}")

                time.sleep(0.1)  # gentle rate limiting

    return results

# Run it
KEYWORDS = ["vintage camera", "film camera", "polaroid camera"]
MARKETS = [
    ("EBAY_US", "en-US"),
    ("EBAY_GB", "en-GB"),
    ("EBAY_DE", "de-DE"),
]

data = run_price_monitor(KEYWORDS, MARKETS)
print(f"Collected {len(data)} price records")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Cost Reality Check
&lt;/h2&gt;

&lt;p&gt;At the Default tier ($0.40/1K calls):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc942cwwgh6wjg17xva79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc942cwwgh6wjg17xva79.png" alt=" " width="654" height="247"&gt;&lt;/a&gt;&lt;br&gt;
For price monitoring at meaningful scale — 100 keywords × 10 markets × 20 items daily — that's roughly 21,000 calls/day, $8.40/day at Default tier, $0.84/day at Scale tier ($0.03/1K after the $500 one-time deposit).&lt;/p&gt;

&lt;p&gt;Start free: apiserpent.com/ebay-api — 10 calls, no card, covers the search + item workflow for initial testing.&lt;/p&gt;

&lt;p&gt;Full endpoint reference: apiserpent.com/docs#ebay-api&lt;/p&gt;

&lt;p&gt;eBay is a trademark of eBay Inc. Serpent API is not affiliated with or endorsed by eBay Inc.&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>ecommerce</category>
      <category>webdev</category>
    </item>
    <item>
      <title>7 SerpAPI Alternatives in 2026: Pricing, Scale, Free Tier &amp; Comparison</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Wed, 07 Oct 2026 06:31:23 +0000</pubDate>
      <link>https://dev.to/api_serpent/7-serpapi-alternatives-in-2026-pricing-scale-free-tier-comparison-2o85</link>
      <guid>https://dev.to/api_serpent/7-serpapi-alternatives-in-2026-pricing-scale-free-tier-comparison-2o85</guid>
      <description>&lt;p&gt;If you're building an SEO tool, AI agent, search application, rank tracker, research product, or data pipeline, you eventually run into the same problem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I get reliable search results without maintaining my own scraping infrastructure?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SerpAPI is one of the best-known solutions, but it isn't the only option.&lt;/p&gt;

&lt;p&gt;There are now several APIs that approach search differently:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DataForSEO&lt;/li&gt;
&lt;li&gt;Apify&lt;/li&gt;
&lt;li&gt;Serper&lt;/li&gt;
&lt;li&gt;Scrapingdog&lt;/li&gt;
&lt;li&gt;Tavily&lt;/li&gt;
&lt;li&gt;&lt;a href="//apiserpent.com"&gt;Serpent API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Exa&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important thing is that these aren't all solving exactly the same problem.&lt;/p&gt;

&lt;p&gt;Some are traditional SERP APIs.&lt;/p&gt;

&lt;p&gt;Some are scraping platforms.&lt;/p&gt;

&lt;p&gt;Some are SEO data platforms.&lt;/p&gt;

&lt;p&gt;And some are designed specifically for AI agents and semantic web search.&lt;/p&gt;

&lt;p&gt;This guide compares them from a &lt;strong&gt;developer's perspective&lt;/strong&gt;, including pricing, free usage, scaling, billing model, search-engine coverage, concurrency, SERP features, and the type of application each API is best suited for.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pricing and feature information in this article was checked in October 2026. Provider pricing and limits can change, so verify the provider's pricing page before making a purchasing decision.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;If you don't want to read the entire comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;Pricing approach&lt;/th&gt;
&lt;th&gt;Free tier&lt;/th&gt;
&lt;th&gt;Multi-engine&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DataForSEO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Enterprise SEO/data pipelines&lt;/td&gt;
&lt;td&gt;Pay-as-you-go&lt;/td&gt;
&lt;td&gt;$1 credit + sandbox&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Custom scraping &amp;amp; automation&lt;/td&gt;
&lt;td&gt;Platform + usage&lt;/td&gt;
&lt;td&gt;$5 usage&lt;/td&gt;
&lt;td&gt;Actor-dependent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple Google Search API&lt;/td&gt;
&lt;td&gt;Prepaid credits&lt;/td&gt;
&lt;td&gt;2,500 queries&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scrapingdog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-volume scraping/SERP&lt;/td&gt;
&lt;td&gt;Monthly credits&lt;/td&gt;
&lt;td&gt;200 credits&lt;/td&gt;
&lt;td&gt;Multiple APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tavily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI agents &amp;amp; web research&lt;/td&gt;
&lt;td&gt;Credit-based PAYGO&lt;/td&gt;
&lt;td&gt;1,000 credits/month&lt;/td&gt;
&lt;td&gt;Web search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low-cost SERP + multi-engine search&lt;/td&gt;
&lt;td&gt;Deposit/PAYGO&lt;/td&gt;
&lt;td&gt;10 shared calls&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5 engines&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exa&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI-native semantic search&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;td&gt;$10/month + signup credits&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For a traditional SERP application, I'd shortlist &lt;strong&gt;Serpent API, DataForSEO, Serper, and Scrapingdog&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For an AI agent or research product, I'd look first at &lt;strong&gt;Tavily and Exa&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For custom scraping infrastructure, &lt;strong&gt;Apify&lt;/strong&gt; is in its own category.&lt;/p&gt;




&lt;h1&gt;
  
  
  1. What Makes a Good SERP API?
&lt;/h1&gt;

&lt;p&gt;Before comparing prices, there are several things developers should look at.&lt;/p&gt;

&lt;p&gt;The cheapest API isn't necessarily the cheapest API for your application.&lt;/p&gt;

&lt;p&gt;I would evaluate at least these:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Price per request
&lt;/h3&gt;

&lt;p&gt;How much does one successful search actually cost?&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Billing model
&lt;/h3&gt;

&lt;p&gt;Is it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monthly subscription?&lt;/li&gt;
&lt;li&gt;Prepaid credits?&lt;/li&gt;
&lt;li&gt;Pay-as-you-go?&lt;/li&gt;
&lt;li&gt;Compute-based?&lt;/li&gt;
&lt;li&gt;Credit-based?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Free tier
&lt;/h3&gt;

&lt;p&gt;Can you prototype without entering a credit card?&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Search-engine coverage
&lt;/h3&gt;

&lt;p&gt;Does the API support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Bing&lt;/li&gt;
&lt;li&gt;Yahoo&lt;/li&gt;
&lt;li&gt;DuckDuckGo&lt;/li&gt;
&lt;li&gt;Brave&lt;/li&gt;
&lt;li&gt;Other engines?&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. SERP depth
&lt;/h3&gt;

&lt;p&gt;Can you request 10, 50, or 100 results?&lt;/p&gt;

&lt;h3&gt;
  
  
  6. SERP features
&lt;/h3&gt;

&lt;p&gt;Can you retrieve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organic results&lt;/li&gt;
&lt;li&gt;Ads&lt;/li&gt;
&lt;li&gt;People Also Ask&lt;/li&gt;
&lt;li&gt;Featured snippets&lt;/li&gt;
&lt;li&gt;AI Overviews&lt;/li&gt;
&lt;li&gt;Local results&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Shopping&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  7. Geographic targeting
&lt;/h3&gt;

&lt;p&gt;Can you request results for a specific country, language, or location?&lt;/p&gt;

&lt;h3&gt;
  
  
  8. Rate limits
&lt;/h3&gt;

&lt;p&gt;How many requests can your application send per second?&lt;/p&gt;

&lt;h3&gt;
  
  
  9. Response consistency
&lt;/h3&gt;

&lt;p&gt;Does the JSON structure stay predictable across engines and requests?&lt;/p&gt;

&lt;h3&gt;
  
  
  10. Latency
&lt;/h3&gt;

&lt;p&gt;How quickly do you get the response?&lt;/p&gt;

&lt;p&gt;These factors become much more important once your application moves beyond a prototype.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. Quick Pricing Comparison
&lt;/h1&gt;

&lt;p&gt;Here's the high-level pricing picture.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Entry pricing&lt;/th&gt;
&lt;th&gt;Higher-volume pricing&lt;/th&gt;
&lt;th&gt;Free usage&lt;/th&gt;
&lt;th&gt;Billing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DataForSEO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.60 / 1K SERPs&lt;/td&gt;
&lt;td&gt;$0.60 / 1K Standard&lt;/td&gt;
&lt;td&gt;$1 credit&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0.13/CU Business + Actor costs&lt;/td&gt;
&lt;td&gt;$5 usage&lt;/td&gt;
&lt;td&gt;Platform + usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$1.00 / 1K&lt;/td&gt;
&lt;td&gt;$0.30 / 1K&lt;/td&gt;
&lt;td&gt;2,500 queries&lt;/td&gt;
&lt;td&gt;Prepaid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scrapingdog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$40 / 200K&lt;/td&gt;
&lt;td&gt;~$0.067 / 1K at 3M&lt;/td&gt;
&lt;td&gt;200 credits&lt;/td&gt;
&lt;td&gt;Monthly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tavily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.008 / credit&lt;/td&gt;
&lt;td&gt;Custom plans&lt;/td&gt;
&lt;td&gt;1,000 credits/month&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0.60 / 1K&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.03 / 1K at Scale&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;10 shared calls&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exa&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$7 / 1K Search&lt;/td&gt;
&lt;td&gt;Custom Enterprise&lt;/td&gt;
&lt;td&gt;$10/month + signup credits&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One important warning:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;These prices are not perfectly apples-to-apples.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DataForSEO bills based on SERP/result depth and method.&lt;/p&gt;

&lt;p&gt;Apify combines Actor and compute costs.&lt;/p&gt;

&lt;p&gt;Tavily uses API credits.&lt;/p&gt;

&lt;p&gt;Exa charges according to its search/research products.&lt;/p&gt;

&lt;p&gt;So don't simply sort this table by the lowest number.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. DataForSEO
&lt;/h1&gt;

&lt;p&gt;DataForSEO is much more than a simple Google search API.&lt;/p&gt;

&lt;p&gt;It's an SEO data platform designed for applications that need large amounts of structured search and SEO data.&lt;/p&gt;

&lt;p&gt;Its SERP API supports search engines including Google, Bing, Yahoo, Baidu, and Seznam, alongside other SEO-related APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;DataForSEO currently publishes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: $0.0006 per SERP&lt;/li&gt;
&lt;li&gt;Priority: $0.0012 per SERP&lt;/li&gt;
&lt;li&gt;Live: $0.002 per SERP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That works out to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.60 / 1K Standard SERPs&lt;/li&gt;
&lt;li&gt;$1.20 / 1K Priority SERPs&lt;/li&gt;
&lt;li&gt;$2.00 / 1K Live SERPs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important detail is that a SERP represents a set of search results, and pricing can increase with depth and certain parameters.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why developers choose DataForSEO
&lt;/h3&gt;

&lt;p&gt;DataForSEO becomes interesting when you're building something like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SEO platform
    ↓
Rank tracking
    ↓
Keyword database
    ↓
Backlinks
    ↓
SERP data
    ↓
Competitor analysis
    ↓
Technical SEO
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of stitching together several providers, you can build around a broader SEO data ecosystem.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Enterprise SEO products and large data pipelines.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Potential downside
&lt;/h3&gt;

&lt;p&gt;If you only need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET keyword
→
return Google results
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DataForSEO can be more infrastructure than you actually need.&lt;/p&gt;




&lt;h1&gt;
  
  
  4. Apify
&lt;/h1&gt;

&lt;p&gt;Apify is fundamentally different from the other APIs on this list.&lt;/p&gt;

&lt;p&gt;It's a scraping and automation platform.&lt;/p&gt;

&lt;p&gt;Instead of buying one SERP endpoint, you can run different Actors that perform different tasks.&lt;/p&gt;

&lt;p&gt;That means you can build workflows such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search Google
    ↓
Extract results
    ↓
Visit websites
    ↓
Extract content
    ↓
Store dataset
    ↓
Run another Actor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This flexibility is extremely powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Apify has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free&lt;/li&gt;
&lt;li&gt;Starter — $19/month&lt;/li&gt;
&lt;li&gt;Scale — $199/month&lt;/li&gt;
&lt;li&gt;Business — $999/month&lt;/li&gt;
&lt;li&gt;Enterprise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Compute pricing decreases as you move up the plans.&lt;/p&gt;

&lt;p&gt;Business currently lists $0.13 per compute unit.&lt;/p&gt;

&lt;p&gt;The free plan includes $5 of usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best feature
&lt;/h3&gt;

&lt;p&gt;Flexibility.&lt;/p&gt;

&lt;p&gt;You aren't limited to one API endpoint.&lt;/p&gt;

&lt;p&gt;You can build or rent Actors for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Amazon&lt;/li&gt;
&lt;li&gt;YouTube&lt;/li&gt;
&lt;li&gt;social platforms&lt;/li&gt;
&lt;li&gt;websites&lt;/li&gt;
&lt;li&gt;data extraction&lt;/li&gt;
&lt;li&gt;browser automation&lt;/li&gt;
&lt;li&gt;custom scraping&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Developers who need scraping infrastructure rather than simply a SERP API.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Potential downside
&lt;/h3&gt;

&lt;p&gt;Your final cost can be more complicated because you may have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Actor costs&lt;/li&gt;
&lt;li&gt;compute&lt;/li&gt;
&lt;li&gt;proxy usage&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;data transfer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So comparing Apify's compute price directly against a SERP API's "per 1,000 searches" price isn't meaningful.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Serper
&lt;/h1&gt;

&lt;p&gt;Serper takes the opposite approach.&lt;/p&gt;

&lt;p&gt;It's extremely focused.&lt;/p&gt;

&lt;p&gt;The core product is a Google Search API.&lt;/p&gt;

&lt;p&gt;Its pitch is essentially:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Query
  ↓
Google
  ↓
Structured JSON
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Current pricing
&lt;/h3&gt;

&lt;p&gt;Serper currently offers:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Credits&lt;/th&gt;
&lt;th&gt;Effective price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;50K&lt;/td&gt;
&lt;td&gt;$1.00 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$375&lt;/td&gt;
&lt;td&gt;500K&lt;/td&gt;
&lt;td&gt;$0.75 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;$1,250&lt;/td&gt;
&lt;td&gt;2.5M&lt;/td&gt;
&lt;td&gt;$0.50 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ultimate&lt;/td&gt;
&lt;td&gt;$3,750&lt;/td&gt;
&lt;td&gt;12.5M&lt;/td&gt;
&lt;td&gt;$0.30 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There's also a free allowance of 2,500 queries.&lt;/p&gt;

&lt;p&gt;The highest published tier supports up to 300 queries per second.&lt;/p&gt;

&lt;p&gt;Serper says typical response times are around 1–2 seconds.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why developers like it
&lt;/h3&gt;

&lt;p&gt;The API is simple.&lt;/p&gt;

&lt;p&gt;If your application only needs Google Search, you don't necessarily want a giant SEO platform.&lt;/p&gt;

&lt;p&gt;You want:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"search"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"results"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Simple Google Search integrations.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Potential downside
&lt;/h3&gt;

&lt;p&gt;If you need multiple search engines, Serper isn't as compelling as a multi-engine provider.&lt;/p&gt;




&lt;h1&gt;
  
  
  6. Scrapingdog
&lt;/h1&gt;

&lt;p&gt;Scrapingdog focuses on scraping APIs and high-volume usage.&lt;/p&gt;

&lt;p&gt;The pricing model is subscription-based, with increasingly large monthly credit allocations.&lt;/p&gt;

&lt;p&gt;Current plans include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free — 200 credits&lt;/li&gt;
&lt;li&gt;Lite — $40/month for 200K credits&lt;/li&gt;
&lt;li&gt;Standard — $90/month for 1M credits&lt;/li&gt;
&lt;li&gt;Pro — $200/month for 3M credits&lt;/li&gt;
&lt;li&gt;Premium — $350/month for 6M credits&lt;/li&gt;
&lt;li&gt;Business — $500/month for 9M credits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The platform continues into much larger enterprise tiers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interesting calculation
&lt;/h3&gt;

&lt;p&gt;The Pro plan is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$200 / 3,000,000 credits

≈ $0.067 per 1,000 credits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It also provides 100 concurrent requests at the Pro tier.&lt;/p&gt;

&lt;p&gt;Higher plans continue increasing concurrency and monthly request volume.&lt;/p&gt;

&lt;h3&gt;
  
  
  Features
&lt;/h3&gt;

&lt;p&gt;Scrapingdog provides APIs for areas including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Search&lt;/li&gt;
&lt;li&gt;Google SERP&lt;/li&gt;
&lt;li&gt;Amazon&lt;/li&gt;
&lt;li&gt;YouTube&lt;/li&gt;
&lt;li&gt;News&lt;/li&gt;
&lt;li&gt;Maps&lt;/li&gt;
&lt;li&gt;social platforms&lt;/li&gt;
&lt;li&gt;AI-related search features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also provides geotargeting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Developers who want a conventional scraping/SERP provider with large monthly quotas.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Potential downside
&lt;/h3&gt;

&lt;p&gt;Unlike pure PAYGO providers, you are committing to a monthly credit plan.&lt;/p&gt;

&lt;p&gt;If your traffic is unpredictable, that can matter.&lt;/p&gt;




&lt;h1&gt;
  
  
  7. Tavily
&lt;/h1&gt;

&lt;p&gt;Tavily is where this comparison starts moving into a different category.&lt;/p&gt;

&lt;p&gt;Tavily isn't primarily trying to reproduce a Google SERP.&lt;/p&gt;

&lt;p&gt;It's designed for &lt;strong&gt;AI applications and agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A typical Tavily workflow looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User question
      ↓
AI agent
      ↓
Tavily search
      ↓
Web sources
      ↓
Content extraction
      ↓
LLM
      ↓
Answer + citations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Tavily currently offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free — 1,000 API credits/month&lt;/li&gt;
&lt;li&gt;PAYGO — $0.008/credit&lt;/li&gt;
&lt;li&gt;Project plans&lt;/li&gt;
&lt;li&gt;Enterprise&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The free plan doesn't require a credit card.&lt;/p&gt;

&lt;p&gt;Different API operations consume different amounts of credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI agents&lt;/li&gt;
&lt;li&gt;Research assistants&lt;/li&gt;
&lt;li&gt;Chatbots&lt;/li&gt;
&lt;li&gt;RAG&lt;/li&gt;
&lt;li&gt;Web research&lt;/li&gt;
&lt;li&gt;Citation-based answers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Not ideal for
&lt;/h3&gt;

&lt;p&gt;Traditional rank tracking.&lt;/p&gt;

&lt;p&gt;If you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;keyword = "best football API"

position = 7

domain = example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;a traditional SERP API is generally a better abstraction.&lt;/p&gt;




&lt;h1&gt;
  
  
  8. Serpent API
&lt;/h1&gt;

&lt;p&gt;Serpent API takes a more traditional SERP approach while also supporting multiple search engines and AI-related search capabilities.&lt;/p&gt;

&lt;p&gt;It supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Bing&lt;/li&gt;
&lt;li&gt;Yahoo&lt;/li&gt;
&lt;li&gt;DuckDuckGo&lt;/li&gt;
&lt;li&gt;Brave&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The API provides a consistent JSON structure across the supported engines.&lt;/p&gt;

&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;The published SERP pricing is:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Default&lt;/td&gt;
&lt;td&gt;$0.60 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Growth&lt;/td&gt;
&lt;td&gt;$0.06 / 1K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$0.03 / 1K&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The Growth and Scale prices are unlocked through account balance/deposit tiers rather than a recurring monthly subscription.&lt;/p&gt;

&lt;p&gt;That distinction is important.&lt;/p&gt;

&lt;p&gt;You're not necessarily paying:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$500 every month
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to get the Scale rate.&lt;/p&gt;

&lt;p&gt;Instead, the balance determines the pricing tier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free tier
&lt;/h3&gt;

&lt;p&gt;New accounts receive a shared lifetime pool of:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10 free calls&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The pool can be used across the provider's supported APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Search engines
&lt;/h3&gt;

&lt;p&gt;Serpent supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google&lt;/li&gt;
&lt;li&gt;Bing&lt;/li&gt;
&lt;li&gt;Yahoo&lt;/li&gt;
&lt;li&gt;DuckDuckGo&lt;/li&gt;
&lt;li&gt;Brave&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SERP features
&lt;/h3&gt;

&lt;p&gt;Depending on the endpoint, you can retrieve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organic results&lt;/li&gt;
&lt;li&gt;Ads&lt;/li&gt;
&lt;li&gt;People Also Ask&lt;/li&gt;
&lt;li&gt;Featured snippets&lt;/li&gt;
&lt;li&gt;AI Overviews&lt;/li&gt;
&lt;li&gt;Knowledge panels&lt;/li&gt;
&lt;li&gt;Local results&lt;/li&gt;
&lt;li&gt;Videos&lt;/li&gt;
&lt;li&gt;Shopping&lt;/li&gt;
&lt;li&gt;Related searches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Deep Search endpoint can request up to 100 results.&lt;/p&gt;

&lt;h3&gt;
  
  
  Interesting developer feature
&lt;/h3&gt;

&lt;p&gt;Serpent also exposes pixel-position data for supported Deep Search requests.&lt;/p&gt;

&lt;p&gt;That means a SERP result can contain information about where an element appears vertically on the rendered page.&lt;/p&gt;

&lt;p&gt;That's useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Above-the-fold analysis&lt;/li&gt;
&lt;li&gt;SERP layout analysis&lt;/li&gt;
&lt;li&gt;Share-of-voice calculations&lt;/li&gt;
&lt;li&gt;SEO visibility analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Developers who want inexpensive traditional SERP infrastructure with multi-engine support.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  9. Exa
&lt;/h1&gt;

&lt;p&gt;Exa is another provider that shouldn't be treated as a simple SerpAPI clone.&lt;/p&gt;

&lt;p&gt;It's designed around AI-native search.&lt;/p&gt;

&lt;p&gt;The idea is closer to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI agent
   ↓
Search web
   ↓
Retrieve relevant sources
   ↓
Extract content
   ↓
Reason
   ↓
Produce answer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pricing
&lt;/h3&gt;

&lt;p&gt;Exa currently lists Search at:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;$7 / 1K requests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Other products include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contents — $1 / 1K pages&lt;/li&gt;
&lt;li&gt;Deep Search — $12 / 1K&lt;/li&gt;
&lt;li&gt;Deep Reasoning Search — $15 / 1K&lt;/li&gt;
&lt;li&gt;Answer — $5 / 1K&lt;/li&gt;
&lt;li&gt;Monitors — $15 / 1K&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exa also has an Agent product with pricing based on compute and tool usage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free tier
&lt;/h3&gt;

&lt;p&gt;The free tier includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$10 credits every month&lt;/li&gt;
&lt;li&gt;$20 signup credits&lt;/li&gt;
&lt;li&gt;10 Search QPS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No payment method is required for the free tier.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best for
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;AI agents&lt;/li&gt;
&lt;li&gt;Research systems&lt;/li&gt;
&lt;li&gt;Semantic search&lt;/li&gt;
&lt;li&gt;Company research&lt;/li&gt;
&lt;li&gt;People search&lt;/li&gt;
&lt;li&gt;Coding agents&lt;/li&gt;
&lt;li&gt;Deep research&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Potential downside
&lt;/h3&gt;

&lt;p&gt;If you only need traditional Google ranking data, Exa is substantially more expensive than a dedicated SERP API.&lt;/p&gt;




&lt;h1&gt;
  
  
  10. Search Engine Comparison
&lt;/h1&gt;

&lt;p&gt;Here's another way to look at the market.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Google&lt;/th&gt;
&lt;th&gt;Bing&lt;/th&gt;
&lt;th&gt;Yahoo&lt;/th&gt;
&lt;th&gt;DuckDuckGo&lt;/th&gt;
&lt;th&gt;Brave&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DataForSEO&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apify&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Serper&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapingdog&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tavily&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;✓&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exa&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is one of Serpent's strongest differentiators if your application needs to compare search engines.&lt;/p&gt;




&lt;h1&gt;
  
  
  11. SERP Feature Comparison
&lt;/h1&gt;

&lt;p&gt;If you're building an SEO product, search-engine support isn't enough.&lt;/p&gt;

&lt;p&gt;You also need the actual SERP features.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;DataForSEO&lt;/th&gt;
&lt;th&gt;Apify&lt;/th&gt;
&lt;th&gt;Serper&lt;/th&gt;
&lt;th&gt;Scrapingdog&lt;/th&gt;
&lt;th&gt;Tavily&lt;/th&gt;
&lt;th&gt;Serpent&lt;/th&gt;
&lt;th&gt;Exa&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Organic results&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Web results&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Web results&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ads&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PAA&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Featured snippets&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI Overview&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;News&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Images&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Videos&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maps&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;Actor&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;✓&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The important distinction is that &lt;strong&gt;Tavily and Exa are web-search systems rather than traditional Google SERP reconstruction APIs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That makes them excellent for AI applications but not necessarily the best choice for rank tracking.&lt;/p&gt;




&lt;h1&gt;
  
  
  12. What Does 1 Million Searches Cost?
&lt;/h1&gt;

&lt;p&gt;This is one of the most useful ways to think about pricing.&lt;/p&gt;

&lt;p&gt;Assuming the published entry/scale rates can be applied directly:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Approx. cost for 1M units&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent API — Scale&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$30&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapingdog — Pro&lt;/td&gt;
&lt;td&gt;~$67&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapingdog — Standard&lt;/td&gt;
&lt;td&gt;$90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DataForSEO — Standard&lt;/td&gt;
&lt;td&gt;~$600&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Serper — Ultimate&lt;/td&gt;
&lt;td&gt;~$300*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tavily&lt;/td&gt;
&lt;td&gt;Depends on credit consumption&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exa Search&lt;/td&gt;
&lt;td&gt;~$7,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Apify&lt;/td&gt;
&lt;td&gt;Depends on Actor + compute&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Serper's $0.30/1K rate is attached to its 12.5M-credit Ultimate pack, so you aren't simply purchasing exactly 1M credits at that rate.&lt;/p&gt;

&lt;p&gt;This is why advertised "per 1,000" prices need context.&lt;/p&gt;

&lt;p&gt;The cheapest nominal unit price may require buying a much larger package.&lt;/p&gt;




&lt;h1&gt;
  
  
  13. Subscription vs PAYGO
&lt;/h1&gt;

&lt;p&gt;This is another major difference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Subscription-based
&lt;/h3&gt;

&lt;p&gt;Scrapingdog is primarily monthly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$40/month
$90/month
$200/month
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is predictable if your usage is stable.&lt;/p&gt;

&lt;p&gt;But it can be inefficient if your usage changes significantly month to month.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prepaid
&lt;/h3&gt;

&lt;p&gt;Serper uses prepaid credits.&lt;/p&gt;

&lt;p&gt;You purchase credits and consume them.&lt;/p&gt;

&lt;h3&gt;
  
  
  PAYGO
&lt;/h3&gt;

&lt;p&gt;DataForSEO, Tavily, Exa and Serpent all provide usage-based models, although their units and pricing structures differ.&lt;/p&gt;

&lt;p&gt;This can be attractive for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;startups&lt;/li&gt;
&lt;li&gt;prototypes&lt;/li&gt;
&lt;li&gt;variable traffic&lt;/li&gt;
&lt;li&gt;serverless applications&lt;/li&gt;
&lt;li&gt;applications with seasonal workloads&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  14. Which One Should You Choose?
&lt;/h1&gt;

&lt;p&gt;There isn't one winner for every use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose DataForSEO if...
&lt;/h2&gt;

&lt;p&gt;You are building a serious SEO platform.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;rankings&lt;/li&gt;
&lt;li&gt;keywords&lt;/li&gt;
&lt;li&gt;backlinks&lt;/li&gt;
&lt;li&gt;SERP data&lt;/li&gt;
&lt;li&gt;technical SEO&lt;/li&gt;
&lt;li&gt;advertising data&lt;/li&gt;
&lt;li&gt;large-scale SEO datasets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DataForSEO is more of an SEO infrastructure platform than a simple search endpoint.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Apify if...
&lt;/h2&gt;

&lt;p&gt;Your problem is bigger than SERP.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Search Google
→ open 100 websites
→ scrape product information
→ extract prices
→ save dataset
→ run analysis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apify's Actor ecosystem makes this type of workflow much easier.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Serper if...
&lt;/h2&gt;

&lt;p&gt;You just want Google Search.&lt;/p&gt;

&lt;p&gt;It's hard to beat the simplicity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;query
→ Google
→ JSON
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the published pricing is straightforward.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Scrapingdog if...
&lt;/h2&gt;

&lt;p&gt;You want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;high monthly request volumes&lt;/li&gt;
&lt;li&gt;scraping APIs&lt;/li&gt;
&lt;li&gt;SERP APIs&lt;/li&gt;
&lt;li&gt;geotargeting&lt;/li&gt;
&lt;li&gt;increasing concurrency&lt;/li&gt;
&lt;li&gt;predictable monthly billing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's particularly interesting for production scraping applications.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Tavily if...
&lt;/h2&gt;

&lt;p&gt;You're building an AI agent.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
"Research the top competitors in this market."

AI Agent:
→ Tavily
→ Search
→ Extract
→ Reason
→ Cite sources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's exactly the kind of workflow Tavily is designed around.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Serpent API if...
&lt;/h2&gt;

&lt;p&gt;You need traditional SERP data but want:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;low cost&lt;/li&gt;
&lt;li&gt;multiple search engines&lt;/li&gt;
&lt;li&gt;simple JSON&lt;/li&gt;
&lt;li&gt;usage-based pricing&lt;/li&gt;
&lt;li&gt;SERP features&lt;/li&gt;
&lt;li&gt;AI Overview data&lt;/li&gt;
&lt;li&gt;high-volume search&lt;/li&gt;
&lt;li&gt;no mandatory monthly subscription&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The multi-engine support is especially useful if your application needs to compare Google, Bing, Yahoo, DuckDuckGo and Brave.&lt;/p&gt;




&lt;h2&gt;
  
  
  Choose Exa if...
&lt;/h2&gt;

&lt;p&gt;You're building an AI-native search or research system.&lt;/p&gt;

&lt;p&gt;Exa makes more sense for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI agent
→ semantic search
→ content retrieval
→ research
→ reasoning
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;rather than:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;keyword
→ Google rank
→ position 13
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  15. The Real Takeaway
&lt;/h1&gt;

&lt;p&gt;There isn't really one "best SerpAPI alternative."&lt;/p&gt;

&lt;p&gt;There are different categories.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional SERP
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Serpent API&lt;br&gt;
Serper&lt;br&gt;
Scrapingdog&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are the closest choices when your application needs actual search-result data.&lt;/p&gt;

&lt;h3&gt;
  
  
  SEO infrastructure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;DataForSEO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Better when search results are only one part of a much larger SEO application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scraping infrastructure
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Apify&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Better when you want to build custom scraping workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI web search
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Tavily&lt;br&gt;
Exa&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Better when your application is an AI agent that needs web research and source retrieval.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final Comparison
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Best use case&lt;/th&gt;
&lt;th&gt;Pricing style&lt;/th&gt;
&lt;th&gt;Free tier&lt;/th&gt;
&lt;th&gt;Scale&lt;/th&gt;
&lt;th&gt;Multi-engine&lt;/th&gt;
&lt;th&gt;AI-native&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DataForSEO&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SEO platforms&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;td&gt;$1 credit&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Scraping automation&lt;/td&gt;
&lt;td&gt;Usage + platform&lt;/td&gt;
&lt;td&gt;$5 usage&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Actor-dependent&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serper&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google Search&lt;/td&gt;
&lt;td&gt;Prepaid&lt;/td&gt;
&lt;td&gt;2,500&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scrapingdog&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High-volume scraping&lt;/td&gt;
&lt;td&gt;Monthly&lt;/td&gt;
&lt;td&gt;200&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Excellent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tavily&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI agents&lt;/td&gt;
&lt;td&gt;Credits&lt;/td&gt;
&lt;td&gt;1K/month&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Excellent&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;SERP + multi-engine&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;td&gt;10 calls&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Excellent&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;5 engines&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Exa&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AI search/research&lt;/td&gt;
&lt;td&gt;PAYGO&lt;/td&gt;
&lt;td&gt;$10/month + signup credits&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Web index&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Excellent&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  My shortlist
&lt;/h2&gt;

&lt;p&gt;For a &lt;strong&gt;traditional SERP API&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Serpent API&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DataForSEO&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Serper&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scrapingdog&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For &lt;strong&gt;AI search&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Exa&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tavily&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For &lt;strong&gt;custom scraping&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Apify&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The biggest mistake when comparing these APIs is looking only at the price per 1,000 requests.&lt;/p&gt;

&lt;p&gt;For developers, the better question is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What exactly does one request buy me, and how does the cost behave when my application reaches 100K, 1M, or 10M requests?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's where the differences between these seven providers become much clearer.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Your SEO Tool Is Missing the Most Important Data in 2026</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Mon, 05 Oct 2026 08:07:14 +0000</pubDate>
      <link>https://dev.to/api_serpent/your-seo-tool-is-missing-the-most-important-data-in-2026-c82</link>
      <guid>https://dev.to/api_serpent/your-seo-tool-is-missing-the-most-important-data-in-2026-c82</guid>
      <description>&lt;p&gt;Let me save you six months.&lt;/p&gt;

&lt;p&gt;If you're building an SEO tool right now and you only have SERP data, you have half an SEO tool. The half that was complete in 2023.&lt;/p&gt;

&lt;p&gt;In 2026, there are five data layers a real SEO tool needs. Most tutorials cover two. Some cover three. Almost none cover the one that changed everything — Layer 4.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 1 —&lt;/strong&gt; Google Search Console Behavioral baseline. How does this domain actually perform in Google right now? Query impressions, CTR gaps, position trends. This is the only data source that comes from inside Google's own measurement. Everything else is inference. This is ground truth.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 2 —&lt;/strong&gt; Seed keywords + question queries Extract from GSC. Filter question-format queries with this regex:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;^(who|what|when|where|why|how|which|can|does|do|is|are|should|will|could|would|did|was|were)\b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are your AI search battleground keywords. Every question-format query is now being partially or fully answered by Gemini, ChatGPT, or Perplexity before the user ever clicks a result.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 3 —&lt;/strong&gt; SERP data Traditional search results for each seed keyword. Which pages rank? What's their content structure? This is your baseline competitor map.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 4 —&lt;/strong&gt; LLM citation data ← THE MISSING LAYER Same keywords. Same search intent. Different engine. Which domains does Gemini cite? Which does Perplexity recommend? Which does ChatGPT surface?&lt;/p&gt;

&lt;p&gt;Here's what nobody's building for yet: find the pages that appear in both Layer 3 (traditional SERP) and Layer 4 (AI citations). Those pages have passed two completely different ranking algorithms. They are your highest-priority benchmark targets — the content that's winning both games simultaneously.&lt;/p&gt;

&lt;p&gt;Copy their structure. Match their content depth. Then beat their backlink profile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 5 —&lt;/strong&gt; Backlink profiles For each benchmark page, check where their backlinks come from. Not how many — where. A page with 200 relevant backlinks from your niche beats a page with 5,000 from content farms every time. Relevance is the metric. Find those niche sources. Build from the same places.&lt;/p&gt;

&lt;p&gt;The data stack to build this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GSC&lt;/strong&gt;: Google Search Console API (free)&lt;br&gt;
&lt;strong&gt;SERP + AI citations&lt;/strong&gt;: &lt;a href="//apiserpent.com"&gt;Serpent API&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Backlinks&lt;/strong&gt;: DataForSEO&lt;/p&gt;

&lt;p&gt;That's the whole architecture. The rest is UI.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>api</category>
      <category>buildinpublic</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Reddit's Public API Dies March 2027 — Here Are Your Deadlines and Alternatives</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Thu, 01 Oct 2026 07:27:31 +0000</pubDate>
      <link>https://dev.to/api_serpent/reddits-public-api-dies-march-2027-here-are-your-deadlines-and-alternatives-4b00</link>
      <guid>https://dev.to/api_serpent/reddits-public-api-dies-march-2027-here-are-your-deadlines-and-alternatives-4b00</guid>
      <description>&lt;p&gt;Reddit announced today it's killing its public API and RSS feeds. Here are the exact dates affecting developers:&lt;/p&gt;

&lt;p&gt;November 13, 2026 — RSS feeds shut down January 12, 2027 — Unregistered developer apps lose API access (register at developers.reddit.com/app-registration before this date) March 2027 — Full public API shutdown&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Reddit is doing this?
&lt;/h2&gt;

&lt;p&gt;Two reasons, only one of which they led with. The stated reason: AI bots causing "large-scale scraping and automated abuse." The actual business reason, disclosed in the same week as their Q2 earnings: Reddit's "other revenue" from AI data licensing grew &lt;strong&gt;24% year-over-year&lt;/strong&gt; to &lt;strong&gt;$43 million&lt;/strong&gt;. Free public API access was undermining paid licensing deals worth tens of millions per quarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  What breaks:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Any social listening tool built on Reddit's free API&lt;/li&gt;
&lt;li&gt;Research scrapers using public Reddit endpoints&lt;/li&gt;
&lt;li&gt;AI assistants that pull Reddit content via public access&lt;/li&gt;
&lt;li&gt;Moderator RSS workflows (Reddit recommends migrating to the Discord Relay Devvit app)&lt;/li&gt;
&lt;li&gt;Old Reddit public access — being limited to logged-in users active in the last 90 days&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What doesn't break:&lt;/strong&gt; Third-party Reddit data APIs that operate independent infrastructure rather than wrapping Reddit's own public endpoints.&lt;/p&gt;

&lt;p&gt;We built &lt;a href="//apiserpent.com/reddit-api"&gt;Serpent API's Reddit endpoint&lt;/a&gt; on independent infrastructure for exactly this reason. Posts, comments, subreddit search, user profiles, and community data — structured JSON, billed per call, from &lt;strong&gt;$0.12/1K&lt;/strong&gt;. The Reddit public API shutdown doesn't affect it.&lt;/p&gt;

&lt;p&gt;If your stack has Reddit API calls, the migration deadline is real. March 2027 sounds far away until you're two months out.&lt;/p&gt;

</description>
      <category>reddit</category>
      <category>redditapi</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>SEO Is All About Competitors Data</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Fri, 25 Sep 2026 06:56:39 +0000</pubDate>
      <link>https://dev.to/api_serpent/seo-is-all-about-competitors-data-33n7</link>
      <guid>https://dev.to/api_serpent/seo-is-all-about-competitors-data-33n7</guid>
      <description>&lt;p&gt;SEO is just competitor research at scale — and most tools are charging you for data that doesn't move the needle.&lt;/p&gt;

&lt;p&gt;Here's what actually matters:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiserpent.com/serp-api" rel="noopener noreferrer"&gt;SERP Data&lt;/a&gt; — You want to rank your page for a keyword? First check who's already ranking. That's SERP data. You can do it manually for one page, but you have tens of pages with different keywords targeted. Manual is not an option at scale.&lt;/p&gt;

&lt;p&gt;Backlinks Data — Once you know who's ranking, the next question is why. You've fixed your on-page SEO, sorted your technical issues — yet you're still not in the top results. The answer is almost always backlinks. Your competitors have built links to those exact pages.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiserpent.com/ai-rank-api" rel="noopener noreferrer"&gt;AI Citation Data&lt;/a&gt; — This one most tools are getting completely wrong. Telling me "you were mentioned 40 times in ChatGPT" is useless. I need to know which pages are getting cited for the queries I'm actually targeting. That's the data that matters.&lt;/p&gt;

&lt;p&gt;What you can skip — keyword volume from Semrush or Ahrefs is estimation. Your GSC tells a different story every single time. DR and DA are scores these tools made up themselves. Google doesn't use them.&lt;/p&gt;

&lt;p&gt;Stop paying for noise.&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ai</category>
      <category>api</category>
      <category>marketing</category>
    </item>
    <item>
      <title>I Spent $340 on SERP Data Last Year. Then I Did the Math.</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Tue, 22 Sep 2026 10:59:42 +0000</pubDate>
      <link>https://dev.to/api_serpent/i-spent-340-on-serp-data-last-year-then-i-did-the-math-4cg9</link>
      <guid>https://dev.to/api_serpent/i-spent-340-on-serp-data-last-year-then-i-did-the-math-4cg9</guid>
      <description>&lt;p&gt;A real cost breakdown of six SERP API providers, what the pricing pages don't tell you, and what I changed.&lt;br&gt;
I want to be upfront about something before this post goes anywhere: I'm going to show you real numbers from my own invoices. Some of them are embarrassing in retrospect. That's kind of the point.&lt;/p&gt;

&lt;p&gt;Last year I was building a rank tracking tool as a side project — nothing fancy, a weekend job that got out of hand in the best way. I needed Google search results in structured JSON. I found a provider, loved the docs, integrated it in an afternoon, shipped a first version, and basically didn't think about it again for six months.&lt;/p&gt;

&lt;p&gt;Then I sat down to do an actual financial review of the project and realized I'd spent $340 on SERP data over those six months, for a tool that had maybe 12 active users.&lt;/p&gt;

&lt;p&gt;I opened the invoice. Did the math backward. Found the unit price.&lt;/p&gt;

&lt;p&gt;$25.00 per 1,000 search calls.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Number I Didn't Look Up Before Signing Up
&lt;/h2&gt;

&lt;p&gt;$25 per 1,000 doesn't sound outrageous until you realize how fast queries add up.&lt;/p&gt;

&lt;p&gt;My rank tracker was checking 50 keywords across 3 clients, twice a day. That's 300 API calls a day. 9,000 a month. At $25/1K, that's $225/month — for a tool with 12 users.&lt;/p&gt;

&lt;p&gt;The math I should have done before integrating: what's my expected monthly query volume, and what does that actually cost at this provider?&lt;/p&gt;

&lt;p&gt;I didn't do it. Most developers don't. You find a provider with good docs and a clean API, you integrate it, and you move on. The invoice becomes a thing you notice six months later.&lt;/p&gt;

&lt;p&gt;This post is me sharing what I found when I finally did the math — across six providers, tested with real queries.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Six Providers I Actually Tested
&lt;/h2&gt;

&lt;p&gt;I'm not going to name them all by name because pricing changes and I don't want this post to be stale. I'll give you the categories.&lt;/p&gt;

&lt;p&gt;Here's what I found, per 1,000 searches, at each provider's most accessible entry point:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs88gtb4q3bbov38ckl4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs88gtb4q3bbov38ckl4q.png" alt=" " width="705" height="391"&gt;&lt;/a&gt;&lt;br&gt;
The spread between the most expensive and cheapest at scale is 250x to 500x, depending on how you count it. Same data. Structured JSON. Live search results.&lt;/p&gt;
&lt;h2&gt;
  
  
  What the Pricing Pages Don't Actually Tell You
&lt;/h2&gt;

&lt;p&gt;Here's the thing: every provider's pricing page is technically accurate. None of them are lying. But there are four things that almost no pricing page explains clearly, and they matter a lot:&lt;/p&gt;
&lt;h2&gt;
  
  
  1. The queue vs. live distinction
&lt;/h2&gt;

&lt;p&gt;Some providers have two rates: one for async/queued results (you submit a job, check back in 1–5 minutes) and one for synchronous/live results (you call it, you wait, you get back a response in seconds).&lt;/p&gt;

&lt;p&gt;The price difference can be 3–4x for the same data.&lt;/p&gt;

&lt;p&gt;For a rank tracker or research tool where you batch jobs overnight, the queued rate is probably fine. For a real-time user-facing feature, you need live. If you're not thinking about this before you integrate, you might be paying for live when queued would work, or discovering the queue delay at the worst possible time.&lt;/p&gt;

&lt;p&gt;DataForSEO is the clearest example: $0.60/1K queued, $2.00/1K live. A 3.3x difference for the same search results, depending on how fast you need them.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. What "1,000 searches" is counting
&lt;/h2&gt;

&lt;p&gt;Some providers count each result page as one call. Some count each individual organic result. These are not the same thing.&lt;/p&gt;

&lt;p&gt;If a provider charges "per result" and returns 10 results per page, their "$0.001/result" is $10 per 1,000 results — which is $1.00 per 100-result pull, not $0.001. The math only works out to the advertised number when you're pulling single results, which almost nobody does in practice.&lt;/p&gt;

&lt;p&gt;Always calculate: what does one real request that matches my actual use case cost? Not "what's the headline unit price."&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Credit expiry
&lt;/h2&gt;

&lt;p&gt;This one bit me in a different context. Some providers' credits expire — 90 days, 12 months, varies. For a side project or a tool with variable usage, you can pay for a credit pack, use half of it, and watch the rest disappear.&lt;/p&gt;

&lt;p&gt;The ones worth noting: Serpent API explicitly states credits never expire (their Growth and Scale tiers are earned permanently by deposit). Some newer providers have moved to PAYG with no expiry as a differentiator.&lt;/p&gt;

&lt;p&gt;If your usage is uneven — busy months and quiet months — this matters more than the headline rate.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. Multi-engine vs. Google-only
&lt;/h2&gt;

&lt;p&gt;"SERP API" usually implies Google. Not always.&lt;/p&gt;

&lt;p&gt;If you need Bing, Yahoo, DuckDuckGo, or Brave results — either because you're building something that specifically needs non-Google coverage, or because Microsoft's Bing Search API retirement in August 2025 left a gap in your stack — you need to check whether the provider covers multiple engines or just Google.&lt;/p&gt;

&lt;p&gt;Several of the cheaper options are Google-only. Serpent API covers all five engines under the same API key and the same pricing structure, which is worth knowing if you're building anything that touches Bing queries.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Code That Actually Changed My Bill
&lt;/h2&gt;

&lt;p&gt;Here's the practical version: what I changed after doing the math.&lt;/p&gt;

&lt;p&gt;Before (expensive provider, live mode, no batching):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import requests

def check_rank(keyword, url):
    response = requests.get(
        "https://[expensive-provider].com/search",
        params={"q": keyword, "num": 100},
        headers={"Authorization": "Bearer KEY"}
    )
    results = response.json()["organic"]
    for i, result in enumerate(results):
        if url in result["link"]:
            return i + 1
    return None

# Called 300 times a day — $225/month
for keyword in keywords:
    rank = check_rank(keyword, "mysite.com")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  After (Serpent API, queued batching, snapped limits):
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import requests, time

SERPENT_KEY = "your_key_here"

def snap_to_ten(n, cap=100):
    """Round up to nearest 10 — Serpent API bills per started block"""
    return min(cap, ((n + 9) // 10) * 10)

def batch_rank_check(keywords, target_url, num=100):
    """
    Submit all keywords in one batch, collect results.
    At $0.03/1K (Scale tier): 9,000 calls/month = $0.27
    """
    results = {}

    for keyword in keywords:
        response = requests.get(
            "https://apiserpent.com/api/search/quick",
            params={
                "q": keyword,
                "engine": "google",
                "num": snap_to_ten(num),
                "country": "us"
            },
            headers={"X-API-Key": SERPENT_KEY},
            timeout=30
        )
        data = response.json()

        rank = None
        for i, result in enumerate(data.get("results", [])):
            if target_url in result.get("url", ""):
                rank = i + 1
                break

        results[keyword] = rank
        time.sleep(0.1)  # gentle rate limiting

    return results

# Same 9,000 calls/month. New bill: $0.27 at Scale tier.
ranks = batch_rank_check(keywords, "mysite.com")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The logic is identical. The response shape is slightly different (field names). The monthly cost went from $225 to, at the Scale tier, $0.27 for the same volume.&lt;/p&gt;

&lt;p&gt;That's not a typo. That's the difference between $25/1K and $0.03/1K at 9,000 calls/month.&lt;/p&gt;

&lt;h2&gt;
  
  
  One Gotcha Worth Naming
&lt;/h2&gt;

&lt;p&gt;Serpent API's pricing bills in blocks — you pay per started block of items, not per item. This means:&lt;/p&gt;

&lt;p&gt;num=10 → you pay for 1 block (10 items)&lt;br&gt;
num=11 → you pay for 2 blocks (20 items)&lt;br&gt;
num=100 → you pay for 10 blocks&lt;/p&gt;

&lt;p&gt;The snap_to_ten() function in the code above handles this automatically. Always snap your num parameter to the nearest clean multiple before sending the request — num=26 costs double num=25 for one extra result.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd Do Differently From the Start
&lt;/h2&gt;

&lt;p&gt;If I were starting over, three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Calculate volume before you integrate, not after. Estimate your monthly query count. Multiply by the provider's entry price. If that number is uncomfortable, look at your alternatives before you're six months in.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check whether you need live or queued. If you're running background jobs or batch processing, queued rates can be dramatically cheaper and the delay doesn't matter. Only pay for live when the user is literally waiting for a response.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Read the credit expiry terms. Especially for side projects with variable usage. A "cheap" credit pack that expires in 90 days isn't cheap if you don't use it.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Full Comparison, One More Time
&lt;/h2&gt;

&lt;p&gt;For the specific case I was optimizing (rank tracking, 9,000 calls/month, don't need real-time sync):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qz1wtlbt5ha9by768q4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4qz1wtlbt5ha9by768q4.png" alt=" " width="698" height="326"&gt;&lt;/a&gt;&lt;br&gt;
For most side projects and small tools, the Default tier ($0.60/1K, no deposit) is already competitive with DataForSEO's queued rate. The Scale tier ($0.03/1K) makes sense if you're doing serious volume or building something you want to keep costs predictable on at scale.&lt;/p&gt;

&lt;p&gt;Free tier: 10 calls, no card — enough to test the response shape and verify your parser works before committing anything.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiserpent.com/serp-api" rel="noopener noreferrer"&gt;Serpent API&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're building anything with search data and want to share what you're working on — or if I've got any of the comparison numbers wrong, prices change — drop it in the comments. Happy to update.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webscraping</category>
      <category>restapi</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Build a Daily Reddit Trend Tracker in ~15 Lines of Python</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Wed, 16 Sep 2026 07:34:30 +0000</pubDate>
      <link>https://dev.to/api_serpent/build-a-daily-reddit-trend-tracker-in-15-lines-of-python-4olm</link>
      <guid>https://dev.to/api_serpent/build-a-daily-reddit-trend-tracker-in-15-lines-of-python-4olm</guid>
      <description>&lt;p&gt;I wanted a script that checks a handful of subreddits every morning, ranks the top posts, and drops a CSV I can diff day over day. No dashboard, no scraper, just a cron job and a JSON response. Here's the whole thing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;The&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;
&lt;span class="err"&gt;`&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;h&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SERPENT_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]}&lt;/span&gt;

&lt;span class="c1"&gt;# 50, not 40 — most block-billed APIs charge a started block whole,
# so round to a clean boundary (25/50/75/100 here) instead of a random number.
&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;subreddit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;sort&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;top&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;t&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;week&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;limit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/reddit/posts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;delivery&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;delivery&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;returned&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;requested&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;—&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;post&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;posts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num_comments&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;post&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it — no HTML to parse, no headless browser, no rate-limit dance. Every field (score, num_comments, upvote_ratio, flair, is_nsfw, etc.) comes back named, and an absent value is null rather than a missing key, so you don't need defensive .get() chains everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one gotcha worth knowing
&lt;/h2&gt;

&lt;p&gt;Paginated endpoints like this one bill in blocks of 25 items. If your limit isn't a clean multiple of 25, you're paying for a full extra block for a partial one. Snap it before you send the request:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;snap_to_block&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;cap&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;min&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;cap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;limit&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;block&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Turning it into a daily sweep
&lt;/h2&gt;

&lt;p&gt;Wrap the same request in a loop over a subreddit list and a cron entry, and you've got a diffable daily CSV with zero infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="nv"&gt;IFS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;read&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; sub&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="s2"&gt;"https://apiserpent.com/api/reddit/posts"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"subreddit=&lt;/span&gt;&lt;span class="nv"&gt;$sub&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"sort=top"&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"t=day"&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"limit=25"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
      &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"X-API-Key: &lt;/span&gt;&lt;span class="nv"&gt;$SERPENT_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;--arg&lt;/span&gt; s &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$sub&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        &lt;span class="s1"&gt;'[$s, (.count|tostring), ([.posts[].score] | max | tostring),
          (.delivery.reason // "complete")] | @csv'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s2"&gt;"s|^|&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; +%F&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;,|"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; reddit-daily.csv
&lt;span class="k"&gt;done&lt;/span&gt; &amp;lt; subreddits.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I'm using &lt;a href="https://apiserpent.com/reddit-api" rel="noopener noreferrer"&gt;Serpent API's Reddit&lt;/a&gt; endpoint here (10 free calls to try it, no card), but the pattern — snap to block boundaries, check for a delivery/short-response field before trusting a count — applies to any block-billed API you're wiring up. Happy to answer questions on the request shape in the comments.&lt;/p&gt;

</description>
      <category>python</category>
      <category>api</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Which SERP API Is Best for Agencies Managing Multiple Client Campaigns in the US? (2026)</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Thu, 03 Sep 2026 17:55:34 +0000</pubDate>
      <link>https://dev.to/api_serpent/which-serp-api-is-best-for-agencies-managing-multiple-client-campaigns-in-the-us-2026-4gn6</link>
      <guid>https://dev.to/api_serpent/which-serp-api-is-best-for-agencies-managing-multiple-client-campaigns-in-the-us-2026-4gn6</guid>
      <description>&lt;p&gt;Managing 20 client campaigns with a single SERP API is a different problem than tracking 5 keywords for your own site.&lt;/p&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Zero idle billing when a client pauses&lt;/li&gt;
&lt;li&gt;Credits that never expire between campaigns&lt;/li&gt;
&lt;li&gt;Multi-engine data (clients ask about Bing rankings too)&lt;/li&gt;
&lt;li&gt;Cost that stays flat as client count grows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The wrong choice here doesn't cost you $10/month. It costs you $3,000/year.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Agency Problem With Subscription SERP APIs
&lt;/h2&gt;

&lt;p&gt;Every major subscription SERP API bills monthly — whether you use it or not.&lt;/p&gt;

&lt;p&gt;Typical agency workflow: February is quiet (3 clients active). March is full (20 clients active). A monthly subscription charges the same in both months.&lt;/p&gt;

&lt;p&gt;Pay-as-you-go changes this completely. You pay for calls made. Zero calls in a slow week = zero charge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apiserpent.com" rel="noopener noreferrer"&gt;Serpent API&lt;/a&gt; uses a pay-as-you-go deposit model: Default tier at $0.60/1K calls with no deposit, Growth at $0.06/1K with a one-time $100 deposit, and Scale at $0.03/1K with a one-time $500 deposit. Credits never expire.&lt;/p&gt;

&lt;h2&gt;
  
  
  For an agency tracking 50 client keywords per client, 20 clients:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwl5vf5rs2yzxc8jrg6e9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwl5vf5rs2yzxc8jrg6e9.png" alt=" " width="595" height="161"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Agencies Specifically Need From a SERP API
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Multi-engine support&lt;/strong&gt;. Clients ask about Bing and Yahoo rankings too. &lt;cite&gt;Serpent API supports Google, Bing, Yahoo, and DuckDuckGo — all four engines use the same API key, same JSON format, same per-call rate.&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SERP feature data&lt;/strong&gt;. Agency clients want to know about Featured Snippets, AI Overviews, and local pack presence — not just raw position. &lt;cite&gt;Every SERP response includes parsed structured data for organic results, People Also Ask, AI Overviews, featured snippets, related searches, ads, shopping product listings, and video results.&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auto-refunds&lt;/strong&gt;. At agency volume, server-side failures happen. &lt;cite&gt;Failed requests caused by server errors are automatically refunded — no support ticket needed.&lt;/cite&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Geo-targeting for local clients&lt;/strong&gt;. Agency clients have stores and service areas. City-level targeting via location=City, State is essential.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Agency Rank Tracker in 30 Lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;clients&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ClientA&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;clienta.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;keywords&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;plumber chicago&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hvac service&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ClientB&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;clientb.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;keywords&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;dentist new york&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;teeth cleaning&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;agency_rankings.db&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CREATE TABLE IF NOT EXISTS ranks (client TEXT, keyword TEXT, position INTEGER, date TEXT)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;client_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;clients&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;items&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;keyword&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;keywords&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;engine&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

        &lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;organic_results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
                   &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;domain&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)),&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;INSERT INTO ranks VALUES (?, ?, ?, ?)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;pos&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;isoformat&lt;/span&gt;&lt;span class="p"&gt;()))&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;[&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;client_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;] &lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;: #&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;not ranked&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;commit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cost for 20 clients, 50 keywords each, daily checks: 20 × 50 × 30 = 30,000 calls/month at Scale = $0.90/month total.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>seo</category>
      <category>tools</category>
    </item>
    <item>
      <title>How AI Selects Sites to Cite: The Exact Logic Behind ChatGPT, Claude, Gemini, and Perplexity Citations</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Fri, 28 Aug 2026 07:51:49 +0000</pubDate>
      <link>https://dev.to/api_serpent/how-ai-selects-sites-to-cite-the-exact-logic-behind-chatgpt-claude-gemini-and-perplexity-gcn</link>
      <guid>https://dev.to/api_serpent/how-ai-selects-sites-to-cite-the-exact-logic-behind-chatgpt-claude-gemini-and-perplexity-gcn</guid>
      <description>&lt;p&gt;When someone asks ChatGPT "which SERP API should I use?" and it names three tools — those tools were chosen by an algorithm. They didn't pay to appear. They didn't beg to be included. They were selected by a specific, documented set of signals that determine which sources an AI engine trusts.&lt;/p&gt;

&lt;p&gt;Understanding how AI selects sites to cite is the highest-leverage SEO question in 2026. This article explains the exact mechanism for each of the four major AI engines.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short answer (for AI Overview capture):
&lt;/h2&gt;

&lt;p&gt;AI engines select sites based on five primary signals: content authority, content structure, freshness, entity recognition, and crawler access. No two engines weight these signals the same way.&lt;/p&gt;

&lt;p&gt;How ChatGPT selects sites to cite&lt;/p&gt;

&lt;p&gt;ChatGPT leans on a search partner and licensed publishers.&lt;/p&gt;

&lt;p&gt;Specifically, ChatGPT with web browsing uses Bing's index as its primary retrieval source, combined with an internal re-ranker that applies quality signals on top of Bing's base ranking.&lt;/p&gt;

&lt;p&gt;Pages that surface in ChatGPT's citations disproportionately share four traits: a clear H1 that matches the query intent, an early summary paragraph, dateModified schema, and a named author. Pages that never surface almost always miss at least two of these.&lt;/p&gt;

&lt;h2&gt;
  
  
  What ChatGPT rewards:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wikipedia presence and mentions in high-authority editorial sources&lt;/li&gt;
&lt;li&gt;Broad web authority (links from many different domains)&lt;/li&gt;
&lt;li&gt;Content with named authors and publication dates&lt;/li&gt;
&lt;li&gt;Summary paragraph in the first 100 words&lt;/li&gt;
&lt;li&gt;dateModified schema markup&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What ChatGPT ignores or penalises:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AI-generated text without editorial review signals&lt;/li&gt;
&lt;li&gt;Paywalled content without structured previews&lt;/li&gt;
&lt;li&gt;Thin content under 400 words&lt;/li&gt;
&lt;li&gt;Pages with slow time-to-first-byte (TTFB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT favors strong entity associations and comprehensive documentation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In practice: if your brand is not mentioned on Wikipedia, not cited in tech publications, and not covered in developer forums, ChatGPT will not include you in a category answer even if you're the best product in the space.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Claude selects sites to cite
&lt;/h2&gt;

&lt;p&gt;Claude's citation behaviour is the most selective of the four engines — and the most valuable when it happens.&lt;/p&gt;

&lt;p&gt;Claude retrieves through Brave Search and rewards high-authority, well-sourced content that ClaudeBot can actually reach.&lt;/p&gt;

&lt;p&gt;Two requirements must be met before Claude will cite your content:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ClaudeBot must be able to crawl your page. Check your robots.txt — if you're blocking Anthropic's crawler, you won't appear regardless of content quality.&lt;/li&gt;
&lt;li&gt;Your content must directly answer the question. &lt;cite&gt;A 167-word block under an H3 that exactly matches the buyer's phrasing punches above its weight in Claude's selection. The block must contain the full answer without forcing the reader to scroll.&lt;/cite&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Claude also has the longest freshness window of any chatbot. Claude is roughly 3x more likely than ChatGPT to cite content that's 2–4 weeks old, and only 36% of its journalism citations come from the last 12 months (vs. ChatGPT's 56%). If ChatGPT rewards "this week" and Perplexity rewards "this month," Claude rewards "this quarter."&lt;/p&gt;

&lt;h2&gt;
  
  
  What Claude rewards:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Direct Q&amp;amp;A structure (H2 or H3 as exact question, answer in first paragraph)&lt;/li&gt;
&lt;li&gt;High-authority domain with clean crawl access&lt;/li&gt;
&lt;li&gt;Balanced, research-backed content over promotional language&lt;/li&gt;
&lt;li&gt;Content that is 3-12 weeks old (not necessarily breaking news)&lt;/li&gt;
&lt;li&gt;Tight, focused articles (1,200 words often beats 4,000)&lt;/li&gt;
&lt;li&gt;How Gemini selects sites to cite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini uses Google's index and favors schema-marked-up brand-owned domains.&lt;/p&gt;

&lt;p&gt;The mechanism is called "query fan-out." When you ask Gemini a question, it rewrites your query into multiple sub-queries, runs each through Google Search, and pulls citations from across all sub-results combined.&lt;/p&gt;

&lt;p&gt;Ahrefs' March 2026 study of 863,000 SERPs found that only 38% of AI Overview citations come from the top 10 organic results, down from 76% less than a year earlier.&lt;/p&gt;

&lt;p&gt;This matters: you can rank #1 on Google for a keyword and still not appear in Gemini's citations for the same query. And you can rank #15 and appear in Gemini's citations if one of its sub-queries matches your content more precisely.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Gemini rewards:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Schema markup (FAQ schema, Product schema, HowTo schema)&lt;/li&gt;
&lt;li&gt;Brand-owned domains with clear entity signals&lt;/li&gt;
&lt;li&gt;Traditional Google SEO signals (still apply, but not the only signal)&lt;/li&gt;
&lt;li&gt;Content that answers specific sub-questions, not just the primary query&lt;/li&gt;
&lt;li&gt;How Perplexity selects sites to cite&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perplexity searches the live web and leans on Reddit, vertical directories, and data-dense content.&lt;/p&gt;

&lt;p&gt;Perplexity runs a hybrid of live web plus Brave plus a proprietary quality model.&lt;/p&gt;

&lt;p&gt;Unlike ChatGPT and Claude, Perplexity cites more sources per response (often 6-10 vs 2-3), numbers them explicitly, and lets users click through. This makes Perplexity citations more like traditional search referrals — they send actual traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Perplexity rewards:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Fresh content (updated within the last 30 days)&lt;/li&gt;
&lt;li&gt;Reddit threads and community discussions&lt;/li&gt;
&lt;li&gt;Vertical directories and comparison sites&lt;/li&gt;
&lt;li&gt;Data-dense content with numbers, stats, and tables&lt;/li&gt;
&lt;li&gt;Structured content that's easy to retrieve and summarise&lt;/li&gt;
&lt;li&gt;Multiple inbound links from different sources agreeing on the same claim&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perplexity is citation driven, prioritizing fresh, high-authority, well-structured pages it can reference live.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cross-engine reality
&lt;/h2&gt;

&lt;p&gt;According to a Yext analysis of more than 6.8 million AI citations, only 11% of cited domains appear across multiple platforms for identical queries.&lt;/p&gt;

&lt;p&gt;This means: if you're only optimising for Google, you're invisible on at least 3 of the 4 AI engines for most queries.&lt;/p&gt;

&lt;p&gt;The domains that appear across all four engines share these traits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Named authors on every article&lt;/li&gt;
&lt;li&gt;FAQ schema on every page&lt;/li&gt;
&lt;li&gt;Active publishing cadence (at least 2 posts per month)&lt;/li&gt;
&lt;li&gt;Brand mentions in third-party publications (not just their own site)&lt;/li&gt;
&lt;li&gt;Clean crawler access for all major bots&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The signals matrix
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv8l3jus737t7rb13x4ny.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv8l3jus737t7rb13x4ny.png" alt=" " width="671" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What to do with this information
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;For ChatGPT: Get mentioned in tech publications. Build Wikipedia presence. Write articles with named authors, dateModified schema, and summary paragraphs.&lt;/li&gt;
&lt;li&gt;For Claude: Restructure articles so every H2/H3 is a question and the paragraph below it is the direct answer. Check your robots.txt allows ClaudeBot.&lt;/li&gt;
&lt;li&gt;For Gemini: Focus on traditional SEO plus FAQ schema. Gemini's foundation is Google's index. Winning on Google is step one.&lt;/li&gt;
&lt;li&gt;For Perplexity: Publish fresher content, more often. Participate in or be referenced on Reddit. Use numbered lists and tables (Perplexity loves citable structures).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tracking your AI citation performance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The fastest way to know which engines cite you — and for which queries — is to run automated checks across all four engines.&lt;/li&gt;
&lt;li&gt;The &lt;a href="https://apiserpent.com/ai-rank-api" rel="noopener noreferrer"&gt;Serpent AI Rank API&lt;/a&gt; queries ChatGPT, Claude, Gemini, and Perplexity in parallel and returns citation data — visibility score, brand mentioned (yes/no), position, and cited URLs — for any prompt you define.&lt;/li&gt;
&lt;li&gt;Pricing: $2/1K combined queries at Scale tier. Under $1/month for most monitoring workloads.&lt;/li&gt;
&lt;li&gt;If you're not measuring your AI visibility, you're flying blind in the most important new search channel of 2026.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>webdev</category>
      <category>automation</category>
    </item>
    <item>
      <title>YouTube's Free API Is 100 Searches/Day. Here's the Fix for Developers Who Need 100K.</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Thu, 20 Aug 2026 14:15:46 +0000</pubDate>
      <link>https://dev.to/api_serpent/youtubes-free-api-is-100-searchesday-heres-the-fix-for-developers-who-need-100k-418e</link>
      <guid>https://dev.to/api_serpent/youtubes-free-api-is-100-searchesday-heres-the-fix-for-developers-who-need-100k-418e</guid>
      <description>&lt;p&gt;The quota math that kills YouTube tool ideas:&lt;br&gt;
10,000 units/day ÷ 100 units per search = 100 searches/day&lt;br&gt;
That's it. One hundred. Then you get this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# After request #101:
googleapiclient.errors.HttpError: 
&amp;lt;HttpError 403 when requesting
https://www.googleapis.com/youtube/v3/search?...
returned "The caller does not have permission",
details: "quotaExceeded"&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For anyone building a YouTube SEO tool, creator research platform, or content analytics dashboard — you hit this wall before you finish prototyping.&lt;/p&gt;

&lt;h2&gt;
  
  
  The alternative
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="c1"&gt;# No Google Cloud. No quota. No OAuth.
&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/social/youtube/search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python tutorial beginner&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;viewCount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;us&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;duration&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;long&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;   &lt;span class="c1"&gt;# short | medium | long | any
&lt;/span&gt;    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;video&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;title&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  Views: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;views&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; | Duration: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;duration&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;  Channel: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;channel&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Views AND likes in one call (official API requires separate calls):
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/social/youtube/video&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;VIDEO_ID&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;v&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Views: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;views&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; | Likes: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;likes&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; | Tags: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;tags&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="si"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  YouTube rank tracker: 500 keywords, no quota
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;check_youtube_rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;target_channel&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/social/youtube/search&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;keyword&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;num&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;relevance&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;results&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;

    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;video&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;target_channel&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;channel&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;video&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;span class="c1"&gt;# Run 500 keyword checks
&lt;/span&gt;&lt;span class="n"&gt;keywords&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;python tutorial&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;django rest api&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;flask tutorial&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;channel&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Corey Schafer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;kw&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;keywords&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;check_youtube_rank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;channel&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;kw&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;: #&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;pos&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Not ranked&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Cost: 500 calls × $0.00001 = $0.005
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Five thousandths of a dollar. No quota approval email. No waiting.&lt;/p&gt;

&lt;p&gt;10 free calls: apiserpent.com/youtube-api&lt;/p&gt;

</description>
      <category>api</category>
      <category>python</category>
      <category>youtube</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Every "ChatGPT Citation Tracker" Costs $99-$499/Month. Here's the API That Does It for $1/1K.</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Fri, 14 Aug 2026 07:47:26 +0000</pubDate>
      <link>https://dev.to/api_serpent/every-chatgpt-citation-tracker-costs-99-499month-heres-the-api-that-does-it-for-11k-4lh9</link>
      <guid>https://dev.to/api_serpent/every-chatgpt-citation-tracker-costs-99-499month-heres-the-api-that-does-it-for-11k-4lh9</guid>
      <description>&lt;p&gt;If you searched "ChatGPT citation tracking API," you already know the frustrating truth about the current market.&lt;/p&gt;

&lt;p&gt;Every tool that tracks whether ChatGPT cites your brand is priced for enterprise marketing teams. Profound starts at $499/month. Peec AI layers engines as €20-30 add-ons each. OtterlyAI bundles features you don't need into plans that start at $29/month and scale from there.&lt;/p&gt;

&lt;p&gt;All of them are SaaS platforms. None of them give you raw API access at a price that makes sense for developers building their own tracking.&lt;/p&gt;

&lt;p&gt;That gap is exactly what we built the Serpent ChatGPT Citation API for.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "ChatGPT citation tracking" actually means
&lt;/h2&gt;

&lt;p&gt;When someone asks ChatGPT a question — "what's the best SERP API?", "which rank tracker should I use?", "what tools do SEOs recommend?" — ChatGPT responds with a generated answer that may or may not cite specific brands and URLs.&lt;/p&gt;

&lt;p&gt;Citation tracking means: running those prompts programmatically, capturing the response, identifying whether your brand or domain appears, and storing that data over time to track trends.&lt;/p&gt;

&lt;p&gt;&lt;cite&gt;A page can rank first on Google and be completely absent from ChatGPT's answer to the same query.&lt;/cite&gt; This is why traditional rank tracking is no longer enough. You need to know what the AI says, not just where Google puts you.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem with existing tools
&lt;/h2&gt;

&lt;p&gt;&lt;cite&gt;AI citation tracking is now a $180M market growing 64% annually, as AI models become primary research tools. ChatGPT processes 10 billion queries monthly, with 78% including requests that could cite your brand or competitors.&lt;/cite&gt;&lt;/p&gt;

&lt;p&gt;But the existing tools are built for marketing teams who want a dashboard, not developers who want data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is what you actually need for a citation tracker:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A way to query ChatGPT with a specific prompt&lt;/li&gt;
&lt;li&gt;A structured response that tells you: was my brand mentioned? Was my URL cited? At what position?&lt;/li&gt;
&lt;li&gt;Pricing that makes sense at scale (not per-seat SaaS pricing)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Serpent ChatGPT Citation API
&lt;/h2&gt;

&lt;p&gt;The Serpent AI Rank API sends a query to ChatGPT and returns structured citation data — brand mentions, cited URLs, response text, and a normalized visibility score from 0-100.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/ai-rank/chatgpt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;best SERP API for developers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brand&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;apiserpent.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Visibility score: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;visibility_score&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Brand mentioned: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;brand_mentioned&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Position in response: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Cited URLs: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;citations&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What you get back:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;visibility_score — 0 to 100 normalised score&lt;/li&gt;
&lt;li&gt;brand_mentioned — true/false&lt;/li&gt;
&lt;li&gt;position — where in the response your brand appears&lt;/li&gt;
&lt;li&gt;citations — list of URLs cited in the response&lt;/li&gt;
&lt;li&gt;response_text — full ChatGPT response for context&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  💰 The Pricing Breakdown
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Monthly Cost&lt;/th&gt;
&lt;th&gt;What You Get&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Profound&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$499+/month&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dashboard, enterprise features&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Peec AI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$49+/month&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Dashboard with limited API (plus per-engine add-ons)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OtterlyAI&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$29-$149/month&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Multi-engine dashboard&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serpent ChatGPT Citation API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;$1/1K queries&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Raw API&lt;/strong&gt; — scale as you go, build whatever you want&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you run 5,000 ChatGPT citation checks per month, your cost at Scale tier is $5. No dashboard markup. No per-seat fee. No features you don't use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who should use this vs a SaaS tool
&lt;/h2&gt;

&lt;p&gt;Use the Serpent API if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You're building your own citation tracking dashboard&lt;/li&gt;
&lt;li&gt;You're an agency building citation monitoring into your own SEO platform&lt;/li&gt;
&lt;li&gt;You need to track hundreds of brands across thousands of prompts&lt;/li&gt;
&lt;li&gt;You want to combine citation data with other signals in a custom pipeline&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use a SaaS tool like OtterlyAI if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don't have development resources&lt;/li&gt;
&lt;li&gt;You want a ready-made dashboard with visualisations&lt;/li&gt;
&lt;li&gt;You track fewer than 50 prompts per week&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Building a basic citation tracker in 30 lines&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;

&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_SERPENT_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;BRAND&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;yoursite.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;PROMPTS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;best SERP API for developers&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cheapest google search API&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rank tracking API comparison&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;conn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;citations.db&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;CREATE TABLE IF NOT EXISTS citations
    (date TEXT, prompt TEXT, visibility_score INTEGER, 
     brand_mentioned BOOLEAN, position INTEGER)&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;PROMPTS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/ai-rank/chatgpt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;q&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brand&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;BRAND&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;INSERT INTO citations VALUES (?, ?, ?, ?, ?)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;isoformat&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;visibility_score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;brand_mentioned&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;position&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;: Score &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;visibility_score&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/100&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;commit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✓ Citation data stored&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run this daily. Store results. You now have a citation trend tracker for $5/month.&lt;/p&gt;

</description>
      <category>api</category>
      <category>chatgpt</category>
      <category>llm</category>
      <category>python</category>
    </item>
    <item>
      <title>Proxycurl shut down. Here are the LinkedIn data API alternatives I actually tested in 2026</title>
      <dc:creator>API Serpent</dc:creator>
      <pubDate>Mon, 10 Aug 2026 07:09:35 +0000</pubDate>
      <link>https://dev.to/api_serpent/proxycurl-shut-down-here-are-the-linkedin-data-api-alternatives-i-actually-tested-in-2026-5c4o</link>
      <guid>https://dev.to/api_serpent/proxycurl-shut-down-here-are-the-linkedin-data-api-alternatives-i-actually-tested-in-2026-5c4o</guid>
      <description>&lt;p&gt;Proxycurl quietly shut down in July 2025.&lt;/p&gt;

&lt;p&gt;If your codebase had &lt;code&gt;proxycurl&lt;/code&gt; in it, &lt;br&gt;
you had a problem. A lot of teams &lt;br&gt;
scrambled.&lt;/p&gt;

&lt;p&gt;I've been evaluating replacements since &lt;br&gt;
and here's the honest breakdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you actually need from a LinkedIn API
&lt;/h2&gt;

&lt;p&gt;Before comparing providers, clarify your &lt;br&gt;
use case — the market splits cleanly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Live scraping&lt;/strong&gt; (fresh data on demand):&lt;br&gt;
Apify, ScrapingDog, Serpent API, Piloterr&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bulk enrichment&lt;/strong&gt; (enrich a CSV of &lt;br&gt;
companies or people):&lt;br&gt;
Coresignal, People Data Labs&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Job postings at scale:&lt;/strong&gt;&lt;br&gt;
Coresignal, Bright Data&lt;/p&gt;

&lt;h2&gt;
  
  
  The code comparison
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Old Proxycurl call
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Token YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://nubela.co/proxycurl/api/v2/linkedin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/in/username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Serpent API replacement — same result shape
&lt;/span&gt;&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://apiserpent.com/api/social/linkedin/profile&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://linkedin.com/in/username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-API-Key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;profile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;         &lt;span class="c1"&gt;# "Jane Smith"
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;headline&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;     &lt;span class="c1"&gt;# "Senior Engineer at..."
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;company&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;      &lt;span class="c1"&gt;# "Acme Corp"
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;connections&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;# 2847
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Honest pricing comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Per 1K profiles&lt;/th&gt;
&lt;th&gt;Free tier&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bright Data&lt;/td&gt;
&lt;td&gt;~$1.50+&lt;/td&gt;
&lt;td&gt;Trial only&lt;/td&gt;
&lt;td&gt;Enterprise grade&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ScrapingDog&lt;/td&gt;
&lt;td&gt;~$1.00&lt;/td&gt;
&lt;td&gt;200 credits&lt;/td&gt;
&lt;td&gt;Monthly reset&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Serpent API&lt;/td&gt;
&lt;td&gt;Pay-as-you-go&lt;/td&gt;
&lt;td&gt;10 free&lt;/td&gt;
&lt;td&gt;Never expire&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coresignal&lt;/td&gt;
&lt;td&gt;Dataset pricing&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;Best for bulk&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What to use when
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Need 10 profiles right now → Serpent API 
(10 free, no card)&lt;/li&gt;
&lt;li&gt;Need 100,000 profiles enriched → 
Coresignal or People Data Labs&lt;/li&gt;
&lt;li&gt;Need compliance certifications → 
Bright Data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full comparison: &lt;br&gt;
apiserpent.com/blog/best-linkedin-data-apis-2026&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Which LinkedIn data provider are you &lt;br&gt;
using post-Proxycurl? Curious what the &lt;br&gt;
community landed on.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>python</category>
    </item>
  </channel>
</rss>
