Developers
OpenShopGraph speaks two protocols against the same data base: a REST tool API (POST /tool/<name>) and MCP (for Claude, ChatGPT, Perplexity). Read endpoints are usable without a key; higher quotas need an API token.
Endpoints
Base: https://api.openshopgraph.org| Tool | Method | Path | Purpose |
|---|---|---|---|
| find_shop | POST | /tool/find_shop | Find a shop by name/domain |
| list_categories | POST | /tool/list_categories | Enumerate the category taxonomy (call before find_shop with a category filter) |
| get_shop | POST | /tool/get_shop | Fetch a single shop by id/domain |
| list_coupons | POST | /tool/list_coupons | Active coupons for a shop |
| get_shipping_policy | POST | /tool/get_shipping_policy | A shop's stated shipping terms (destinations, delivery estimate, free threshold) |
| get_trust | POST | /tool/get_trust | Trust-relevant facts OpenShopGraph measured itself (TLS, hosting, domain age, registrar, payment methods) — individual signals with source and check date, deliberately no score |
| report_code | POST | /tool/report_code | Report a coupon-code try outcome (write-only) |
| report_issue | POST | /tool/report_issue | Report a shop- or data-fact issue with a fixed reason (write-only) |
Authentication
Read calls (e.g. /suggest, list_coupons ) are keyless within fair use. For higher limits, send the header x-api-token: <your-token>.
Example request
curl -s "https://api.openshopgraph.org/suggest?q=mäh&limit=5"
curl -s -X POST "https://api.openshopgraph.org/tool/list_coupons" \
-H "content-type: application/json" \
-d '{"shop_domain":"example.com"}' Example response GET /suggest
{
"query": "mäh",
"categories": [{ "category": "Home & Garden", "slug": "home-garden", "count": 2 }],
"shops": [
{ "id": "s_001", "name": "Example Shop", "domain": "example.com", "category": "home-garden", "score": 0.97 }
]
}