Chocodata

Docs

ChatGPT Claude

Changelog

Every visible change to the API, the SDKs, and the dashboard. Newest first. Breaking changes are flagged; we give 14 days of notice.

Changelog

Breaking API changes are announced 14 days in advance via email + this page. In-flight requests are always settled under the old contract.


2026-06-11

Docs

  • Restructured the docs around the one-request-shape model. New pages: Core concepts (how the API works, dedicated endpoints vs the Universal scraper, the credit model) and Endpoint reference (how 453 endpoints share one shape and how to find any of them).
  • New Universal Web Scraper API page: scrape any URL to JSON, HTML, or text via /api/v1/universal/get.
  • Getting started rewritten to lead with the generic {site}/{resource} pattern and a non-marketplace-specific path. Error codes and billing generalized across all verticals (not just commerce).
  • The full browsable catalogue of all endpoints now lives at /scraper-api.

2026-05-19

API

  • New error code: 404 product_not_found. When a target site returns a 404 for the requested item (delisted, ID malformed, or never existed in the chosen region), the API now returns a clean 404 with {"error":"product_not_found","retryable":false} instead of the misleading 502 target_unreachable it returned before. SDK consumers should treat 404 as a terminal failure; the item won’t come back.
  • Skip the redundant retry strategy on confirmed 404s. Saves 1 paid-residential rotation per delisted item.
  • See updated error codes table and billing policy (404s remain free).
  • Bot-manager interstitial detection (rolled out on the Amazon search target first): the extractor now recognizes the Akamai bot-manager interstitial (a 2-3 KB JS shell carrying a bm-verify token and a triggerInterstitialChallenge script). Previously these silent challenges slipped past the captcha detector, the extractor saw zero results, and the request returned 502 extraction_failed. They now trigger the standard residential-IP rotation; you weren’t charged before and still aren’t, but the failure is now both rarer (rotation almost always recovers) and more honest when it does happen.
  • Search endpoints add an optional no_results: true flag (with total_results: 0) for the rare case where a site returns a real search page with zero matches. Pre-patch this surfaced as 502 extraction_failed; it now correctly returns HTTP 200 with an empty products array.
  • Marketplace search field-extraction fixes (5 fields on every result card; shipped on the Amazon target):
    • reviews_count: now populated. Pre-fix this was always null; the extractor was looking at a markup class the site hadn’t shipped in months. Source of truth is now the aria-label of the rating wrapper (“5,054 ratings”), which gives the precise integer rather than the rounded “(5K)” display value. Coverage on a typical search page: ~95-100%; null only when the site hides reviews on brand-new listings.
    • price_strikethrough: no longer captures per-unit prices. The historic bug surfaced as 0.23 on a cologne card (which is the $0.23/milliliter per-unit price, not a list price). The fix requires a strikethrough marker and rejects any candidate whose surrounding text contains /fluid ounce, /milliliter, /Fl Oz, /Count, /Pound, /Ounce, /Each, /Pack, etc. Strikethrough is now null when the product isn’t on sale, and strictly greater than the current price when it is.
    • highest_price: mirrors the fixed strikethrough on search cards (real multi-tier ranges only surface on product pages).
    • sales_volume: now populated. Returns the verbatim site string ("5K+ bought in past month", "200+ bought in past week"). Coverage on popular categories: ~80-100%; null when the site doesn’t surface a velocity badge (low-traffic categories).
    • organic_position: guaranteed 1-indexed across non-sponsored cards. Sponsored cards get sponsored_position instead. The first organic card after any run of sponsored cards still gets position 1.

2026-04-21

Dashboard

  • /app/settings/billing: PAYG top-up calculator now updates the “Credits you’ll get” and “Basic scrapes” fields live as you type.
  • Loading skeletons added to dashboard home, billing, usage, and API keys routes - no more blank flash on first navigation.
  • Sidebar “Documentation” link now points at the new /docs site.

Docs

  • Launched /docs on the marketing site: Getting started, endpoint pages (product / search / batch), guides (auth, errors, rate limits, SDKs, billing, country & language), and this changelog.
  • Added /docs/llms.txt, /docs/llms-full.txt, and an .md variant for every doc URL so LLMs / coding agents can ingest the full corpus cheaply.

SDKs

  • chocodata (Node) v0.1.4 - README updated with 5-credit pricing, removed claims about “no credit system”.
  • chocodata (Python) v0.1.4 - same.
  • chocodata-go v0.1.4 - same.

2026-04-16

API

  • Credit rebase: 1 basic scrape is now priced at 5 credits (was 1). Plan allowances and PAYG packages scaled x5 accordingly - your dollar-cost-per-scrape is unchanged. The “1 credit = 1 scrape” pre-launch shorthand only applied to internal testing.
  • Headers prefix changed from Spb-* to Asa-*. Old prefix will keep returning values for 90 days, then be removed.

Dashboard

  • Live credit balance now read from authoritative ledger on every page load - no more stale numbers from cached mirrors.
  • Monthly usage graph restyled with visible bars even on zero-credit days.

2026-04-10

API

  • Shipped production success-rate improvements for the Amazon target’s latest A/B layout. Measured SR jumped from ~87% to ~97% on a 30-query mixed international set.
  • Parser hardening: gift-card and subscription-plan product templates now extract correctly instead of hitting extraction_failed.

2026-04-01

API

  • render_js and screenshot query params reserved. Passing either returns 501 not_implemented today; the real implementation is on the roadmap for Q3.
  • New response header Asa-Attempts reports how many internal retries we used to fetch your page.

Billing

  • Non-2xx responses are now guaranteed free - no edge case where a partial 502 is charged. See Billing policy.

Earlier

Older entries predate the public launch and aren’t preserved here. If you need historical info (old behaviour of a specific endpoint), email hello@chocodata.com and we’ll pull it from internal records.