🎉 Limited time — 20% off all plans. View pricing →
Docs · SEO

Featured-snippet candidates

Extract paragraphs, lists, and tables that look like featured-snippet candidates — from HTML you provide OR from a URL we fetch.

POST /v1/seo/snippet-candidates

Pulls three kinds of snippet candidates: paragraphs in the 30–80 word band after each <h2> (tagged quality: "ideal" for the classic 40–55 window, "acceptable" otherwise), unordered and ordered lists with 3+ items, and tables with 2+ rows × 2+ columns. Each candidate includes the heading it sits under so a downstream editor can review them in context. Caller writes their own logic to pick the strongest per query.

Two input modes:
html: caller supplies the HTML directly (no fetch, free).
url: we fetch the URL on the caller's behalf. With use_residential_proxy: true the fetch routes via our residential pool with JS rendering — finds snippets on JS-hydrated docs sites that have 0 <p> tags in their server-rendered HTML. Bills +3 credits.

Parameters

Name Type Required Default Description
html string no HTML to extract from. Body limit 1 MB. Provide this OR url.
url string no Alternative to html. We fetch the page for you.
use_residential_proxy boolean no false Only meaningful with url. Premium fetch via residential pool with JS rendering. Bills +3 credits.
max_per_kind integer no 5 Cap per kind (paragraphs / lists / tables). Range 1–50.

Request

curl -X POST https://api.qcrawl.com/v1/seo/snippet-candidates \
  -H "Authorization: Bearer osk_..." \
  -d '{"html": "<article><h2>How big is the free tier?</h2><p>The free tier covers 1,000 requests per month across every endpoint. No credit card is required at signup, and credits do not roll over between billing periods. Upgrade only when you need more.</p></article>"}'

Response

{
  "status": "success",
  "paragraphs": [
    {"heading": "How big is the free tier?", "snippet": "The free tier covers 1,000 requests per month...", "word_count": 40}
  ],
  "lists": [],
  "tables": [],
  "total_candidates": 1
}

Related