The product layer AI agents can trust.
Resolve exact products, check compatibility, get authorised offers with honest delivered prices, and route purchases compliantly.
Built for consequential answers
Identity, price, freshness and rights — in the response, every time.
A transport layer for agents that need to know what is true, what is unknown, and what they are allowed to do next.
Proof in the data
A catalogue you can inspect.
Current figures from the catalogue, not a build-time estimate.
Merchants represented by at least one active offer.
Canonical products resolved from authorised data.
Active offer records with source and freshness context.
Licensed or otherwise permitted sources, not suppliers with stock.
Data region
Derived from the country recorded for suppliers represented in the catalogue.
Market types represented
By supplierHow the catalogue grows
988 suppliers found by discovery
- 1Found in public records
OpenStreetMap and Companies House, queried directly. Two sources that disagree, merged only on unambiguous evidence.
- 2Asked, not assumed
Every candidate's own robots.txt is read first. A site that says no, or does not answer, is not added at all.
- 3Recorded with its basis
Each merchant carries what was checked and when, so the reason we may crawl it can be audited later.
These are the merchants and sources this service has rights to search. It is not a complete view of the market.
curl -s "http://localhost:8420/v1/products/search" \
-H "Authorization: Bearer $APG_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "battery for DeWalt DCD796N", "limit": 5}'{
"product": { "title": "DeWalt DCB184 18V XR 5.0Ah Battery" },
"match": { "type": "compatible", "identity": "confirmed" },
"best_offer": {
"price": { "total": "62.49", "currency": "GBP", "completeness": "complete" },
"availability": "in_stock"
},
"purchase_ready": true
}purchase_readyOnly true when identity, stock, price and route are all safe to act on.
price.completenessOnly a complete price has a total. Missing shipping is never read as zero.
match.identityConfirmed identity is separate from compatibility or string similarity.
A useful constraint
No invented certainty.
Responses disclose merchant coverage, offer freshness and price completeness. We do not call an item price “cheapest” unless every delivered component is known, and commission is not an organic ranking factor.