Price facet reference

The price facet returns sanitized price offers, freshness metadata, and provenance labels for a product identified by GTIN.

Endpoint

GET /api/v1/products/{gtin}/price
Authorization: Bearer pdapi_YOUR_KEY_HERE

Parameters

ParameterInTypeRequiredDescription
gtinpathstringYesGTIN-8, -12, -13, or -14
languagequerystringNoResponse language (en, fr). Default: en

Example request

curl -H "Authorization: Bearer pdapi_YOUR_KEY_HERE" \
  "https://api.product-data-api.com/api/v1/products/0885909950805/price?language=en"

Example response (billable)

{
  "meta": {
    "requestId": "req_01HXYZ",
    "gtin": "885909950805",
    "facet": "product.price",
    "billable": true,
    "creditsConsumed": 5,
    "creditsRemaining": 995,
    "reason": "fresh-offer",
    "responseTimeMs": 31
  },
  "data": {
    "bestPrice": {
      "price": 699.0,
      "currency": "EUR",
      "merchant": "TechStore FR",
      "offerUrl": "https://shop.example.com/product/abc",
      "condition": "new"
    },
    "offers": [
      {
        "price": 699.0,
        "currency": "EUR",
        "merchant": "TechStore FR",
        "condition": "new",
        "lastSeenDays": 1
      },
      {
        "price": 739.0,
        "currency": "EUR",
        "merchant": "BigBox Online",
        "condition": "new",
        "lastSeenDays": 4
      }
    ],
    "offerCount": 2,
    "freshness": {
      "oldestOfferDays": 4,
      "newestOfferDays": 1,
      "windowDays": 30
    }
  }
}

Example response (non-billable - stale data)

{
  "meta": {
    "requestId": "req_02HABC",
    "gtin": "885909950805",
    "facet": "product.price",
    "billable": false,
    "creditsConsumed": 0,
    "creditsRemaining": 995,
    "reason": "stale-data",
    "responseTimeMs": 12
  },
  "data": null
}

Response schema

meta object

FieldTypeDescription
requestIdstringUnique request ID for support
gtinstringNormalized GTIN (leading zeros preserved)
facetstringAlways product.price
billablebooleantrue if credits were consumed
creditsConsumedintegerCredits debited (0 if non-billable)
creditsRemainingintegerBalance after this request
reasonstringBilling decision code
responseTimeMsintegerServer processing time in ms

data.bestPrice object

FieldTypeDescription
pricenumberLowest current price
currencystringISO 4217 currency code
merchantstringSanitized merchant display name
offerUrlstringDirect offer URL (may be affiliate-wrapped)
conditionstringnew or used

data.offers[] array

Each offer entry:

FieldTypeDescription
pricenumberOffer price
currencystringISO 4217 currency code
merchantstringSanitized merchant name
conditionstringnew or used
lastSeenDaysintegerDays since this offer was last observed

data.freshness object

FieldTypeDescription
oldestOfferDaysintegerAge of oldest offer in offers[]
newestOfferDaysintegerAge of newest offer in offers[]
windowDaysintegerCurrent freshness window (30)

Freshness and billing

An offer is considered fresh if it was observed within the last 30 days. If all known offers for a product are older than 30 days, the response is non-billable (reason: stale-data).

GTIN normalization

GTINs are normalized before lookup:

  • Leading zeros are preserved for GTIN-13 and GTIN-14.
  • GTIN-8 and GTIN-12 (UPC-A) are accepted and validated with checksum.
  • Invalid checksums return 400 Bad Request immediately, before any credit reservation.

Rate limits

PlanRequests per second
Free1
Starter10
Pro50
EnterpriseCustom

Quickstarts