Developer API
Last updated July 2026
CheckBeforeYouShop tracks what dozens of shopping portals pay at each store - cashback, airline miles, and card points - with rate history and verdicts. The same data powers this public JSON API. It's free to use with attribution, read-only, and CORS-open, so browser apps and AI agents can call it directly.
Base URL
https://checkbeforeyoushop.com Response shape
Every endpoint returns the same envelope:
{
"data": { ... }, // the payload
"data_as_of": "2026-07-17T…", // freshness (ISO 8601)
"source": "CheckBeforeYouShop",
"attribution": "Data from CheckBeforeYouShop …",
"disclosure": "Rates are read from each portal's pages …"
}
Rates are points-native: each is returned in its own unit (pct_cash, miles_per_dollar, points_per_dollar, flat_cash, …)
with a human rate_display. We never convert miles to a dollar value for you. Where
a portal has a live outbound link, store responses include a go_url.
Every rate also carries a rate_kind, and the two kinds are
not comparable:
-
earn_rate: a return on what you spend (8%,3 mi/$). This is what a store-vs-store or portal-vs-portal comparison should rank on. -
one_time_bonus: a fixed payment for a single qualifying purchase (11,200 miles,$150). It does not scale with spend, usually pays once per account, and often requires a new subscription or service. Ranking it against an earn rate by raw number is always wrong:11,200is not "bigger than"3.
Endpoints
| Method | Path | Returns |
|---|---|---|
GET | /api/v1/search.json?q=nike | Resolve a store or portal name to its page + slug. |
GET | /api/v1/merchants/{slug}.json | Every portal’s live rate for one store, the best rate per unit, and a verdict. The flagship endpoint. |
GET | /api/v1/portals.json | The tracked-portal directory: currency paid, stores tracked, data freshness. |
GET | /api/v1/portals/{portal}.json | One portal’s profile plus its current top rates. |
GET | /api/v1/highs.json | Rates at or near the highest we have recorded right now. Earn rates are listed first; one-time bonuses follow (check rate_kind). |
Example
curl https://checkbeforeyoushop.com/api/v1/merchants/nike.json MCP server (for AI assistants)
The same data is available as a read-only Model Context Protocol server, so AI assistants (ChatGPT, Claude, Perplexity) can call it as a live tool: the cross-portal "which portal pays the most at store X" answer that a single-portal cashback app can't give. No auth, stateless streamable HTTP; add it by URL:
https://checkbeforeyoushop.com/mcp Read-only tools, each returning the same attribution + data_as_of envelope:
compare_portal_rates: every portal's rate for a store, best-per-unit, + verdictget_best_rate·get_rate_history·get_portalsearch_stores·list_signup_bonuses·get_best_play(stacking)
History window: get_rate_history returns the last 21 days of raw
changes. The derived answers aren't capped: the verdict, percentile and highest-yet fields on
get_best_rate, compare_portal_rates and the REST endpoints are computed
over our full archive. Need deeper raw history? Get in touch.
Fair use
-
Free with attribution: credit CheckBeforeYouShop and link each item's
page_url. - Responses are edge-cached; please cache on your side and don't hammer the endpoints.
-
Rates change and can go stale: surface
data_as_ofand the disclosure, and send users to the portal to confirm before they shop.
Building an AI shopping agent? Point it at the MCP server above - that's the whole integration, and it covers cashback and airline miles across every portal we track.