Documentation

GTIN to product page in four requests.

Everything below runs as printed with a test key. Test keys behave exactly like live ones against a frozen snapshot; behavior parity is a contract, not an aspiration.

Last verified 2026-06-10 Language: curl · SDKs below

Quickstart

Four requests from a barcode to a rendered product page. Each one returns in well under a second; the last one returns HTML you can ship.

1

Resolve the identifier

Send whatever you have. The verdict is honest; nothing is force-matched.

$ curl https://api.getproductdata.com/v1/resolve \
    -H "Authorization: Bearer gpd_test_51Hx…" -d gtin=4012345678901
→ "verdict": "exact_variant", "confidence": 0.99
2

Fetch the dossier

Every attribute with provenance; depth and expansion are yours to shape.

$ curl ".../v1/products/gpd:family:sharp.a155u?depth=standard&locale=de-DE"
3

Add the context

Percentiles and ready-made comparison sentences, evidence attached.

$ curl ".../v1/products/gpd:family:sharp.a155u/context"
→ "population": 1842, "highlights": [ "share_beaten": 0.82 ]
4

Render the page

Formats are renderings of one canonical dossier. The HTML is the same specimen component this site uses.

$ curl ".../v1/products/gpd:family:sharp.a155u.html?units=regional&market=de"

Authentication

Bearer tokens, environment-scoped. The plaintext is shown once; revocation is global within one minute.

Scopes: read, resolve, ingest, render:pdf, account:manage. The default key carries read and resolve; requests with insufficient scope return 403 insufficient_scope.

Versioning

Two things version independently. The API version (header GPD-Version: 2026-06-01) pins request and response shapes; breaking changes only ever ship as a new dated version. The schema release (schema_release in every payload) is the living vocabulary; it evolves additively and never breaks a parser.

Follow the vocabulary as it grows by subscribing to schema.attribute.promoted events.

API reference

The complete surface, with credit cost per call. Generated from the OpenAPI artifact in production docs; abbreviated here.

Formats: json, md, html, csv, pdf (+3 credits). Suffix sugar works everywhere: /v1/products/{id}.md.

Errors

Errors state the fact and the fix, machine-readable, with a documentation URL and request id.

Webhooks

Signed (HMAC, 5-minute tolerance), delivered at least once, ordered per resource. The events that matter:

  • ingestion.completed, with what was built and its quality scores
  • product.updated, diff included
  • product.value_contested, the moment evidence disagrees
  • product.identity_corrected, when a merge or split executes
  • schema.attribute.promoted, the vocabulary growing under you, safely

Rate limits

Every 429 carries the limit, the remainder, the reset time, and the exceeded layer by name.

SDKs

Generated from the OpenAPI artifact; hand-written code in SDKs: zero.

$ npm install @getproductdata/sdk
$ pip install getproductdata

For machines

Agents read what humans read. Every documentation page has a markdown twin; the index lives at /llms.txt and is maintained like an API surface. The OpenAPI document is the build artifact the SDKs and these docs are generated from; structured data is on every page of the site.

Crawl permissions are explicit, the bot identity is signed, and the markdown mirrors are the supported path; scraping the HTML is the slow way to get the same bytes.