Free beta
Price history & fake-discount detection API
Query BuckHound's own observed price history for a product, or verify a merchant's claimed reference price against it in one call. First-party data, honest verdicts, no credit card during beta.
Two endpoints, one dataset
Both endpoints read BuckHound's append-only price-capture store — prices we observed ourselves, recorded daily.
- GET /api/v1/price-history — every price point we have captured for a product, plus min / max / median and the number of distinct days of coverage backing them.
- POST /api/v1/verify— checks a merchant’s claimed list/reference price against that history. Returns
verified,suspect_reference_price, orinsufficient_data, with the evidence behind the verdict.
Who it's for
Anyone whose product makes a claim about whether a price is real.
Deal sites & newsletters
Stop publishing “70% off” deals anchored to a list price that never existed. Verify the reference price before a deal goes out, and show readers real historical context.
Browser extensions
Surface “is this actually a deal?” at checkout. One verify call returns a verdict plus the historical min/max/median evidence to display alongside it.
Affiliate & content sites
Back “lowest price we’ve seen” claims with observed data instead of vibes. Coverage-day counts tell you exactly how strong each claim is.
Price trackers & repricers
Pull an independent series of observed prices to cross-check your own feeds, or use integrity verdicts as a manipulation signal in your models.
Authentication
Pass your beta key as a bearer token. Keys are scoped to the Data API only. Requests without a valid key return 401; each key is rate-limited (60 requests/minute by default during beta) with standard X-RateLimit-* headers on every response.
Get a product's price history
SKUs are namespaced by source, e.g. amazon:B0EXAMPLE.
curl "https://buckhoundapp.com/api/v1/price-history?sku=amazon:B0EXAMPLE" \
-H "Authorization: Bearer bhk_your_key_here"Response
{
"sku": "amazon:B0EXAMPLE",
"points": [
{ "day": "2026-06-12", "price": 149.99 },
{ "day": "2026-06-13", "price": 149.99 },
{ "day": "2026-06-14", "price": 129.99 }
],
"min": 129.99,
"max": 149.99,
"median": 149.99,
"coverageDays": 3,
"currency": "USD"
}One point per distinct capture day. coverageDays is the honest measure of how much history we hold — use it to decide how much weight to give the summary stats.
Verify a reference price
Is that crossed-out list price real, or was it invented for the discount badge?
curl -X POST https://buckhoundapp.com/api/v1/verify \
-H "Authorization: Bearer bhk_your_key_here" \
-H "Content-Type: application/json" \
-d '{"sku":"amazon:B0EXAMPLE","claimedListPrice":199.99,"currentPrice":99.99}'Response
{
"verdict": "suspect_reference_price",
"evidence": {
"coverageDays": 41,
"observationCount": 41,
"historicalMin": 129.99,
"historicalMax": 159.99,
"historicalMedian": 149.99,
"claimedListPrice": 199.99,
"currentPrice": 99.99,
"integrityVerdict": null,
"reason": "Claimed list price exceeds the highest observed price by more than 5%."
}
}| Verdict | Meaning |
|---|---|
verified | The claimed list price is consistent with prices the product has actually held in our history, and the price series shows no manipulation pattern. |
suspect_reference_price | The claimed list price sits materially above anything the product has ever sold for in our data, or the price series itself shows an inflate-then-discount / yo-yo pattern. |
insufficient_data | We hold fewer than 14 days of coverage for this product. We tell you that instead of guessing — no fabricated verdicts, ever. |
Why this data is different
Most price-history APIs resell someone else's feed. This one can't.
- First-party only. Every point was captured by BuckHound from its own live deal pipeline. Licensed third-party enrichment data is firewalled out of API responses at the query layer.
- Append-only. History accumulates daily and is never rewritten. What we observed on a given day is what you get.
- Honest about thin coverage. Below 14 days of history,
/verifyreturnsinsufficient_data. A verification API that guesses is worse than no API. - Anomaly-filtered. Capture-time outlier detection flags suspect prices; flagged points never enter API responses or verdicts.
Errors & limits
400— malformed request (missing/invalidsku, bad JSON body).401— missing or invalid API key.429— rate limit exceeded; checkX-RateLimit-Reset.- Default limit is 60 requests/minute per key during beta. Need more? Say so when you request a key.
Get a beta key
Beta keys are issued manually during the free beta — no credit card, no self-serve signup yet. Reach out via the contact page and tell us what you’re building; most requests get a key within a day. Want to see the data first? Browse our public price-history pages.