Skip to content

Product and property data

Parsed JSON for listings, prices and property records

The same machinery as the social catalogue — one billing path, caching, batching, async jobs, change-detecting subscriptions — pointed at commerce and real estate. You never write a selector, and you are never charged for a blocked page.

failures never chargedcache hits 0 creditsprice and currency are separate fields

Sources

What is verified, and against what

Each of these was probed live and parsed a real payload. The evidence is stated rather than asserted, because this is a buyer who will call the endpoint before they finish reading.

  • Walmart

    Product

    productcategoryreviews

    A real 580 KB product page: title, 219 USD, rating 4.3 over 1,083 reviews. Category paging reported 25 pages and 48 items on the first. Review sorting is honoured rather than merely accepted: asking for newest returned genuinely newer reviews.

  • Redfin

    PropertyListing

    searchforSaleforRent

    A real 88-home GIS payload. For-sale records carry price, beds, baths, square footage, the listing agent, price history and school assignments.

  • Zillow

    PropertyListing

    propertysearch

    A real 354 KB property payload — 3,080,600 USD, five beds, five and a half baths, 5,807 square feet, built 2012. Search mapped all 41 rows it returned.

  • Amazon

    Product

    search

    Search is verified against a real payload. Product-detail and offers are blocked by an anti-bot challenge and are not claimed here.

Endpoints that a live probe found blocked are not listed above and are not sold. They stay in the reference, marked, because a customer discovering a gap themselves is worse than reading about it here. A blocked page returns upstream_blocked and costs nothing.

One shape

A price is an amount and a currency, never a string

Everyone parses a product page differently, so the same listing arrives in a different shape from every vendor. Here a Walmart product and an Amazon product are the same object, and a Zillow record and a Redfin record are the same object.

The separation matters more than it looks. A page that renders £219 and a page that renders 219,00 € both mean a number and a currency, and flattening either into a string moves the problem to whoever consumes it — usually after they have already compared two of them.

A live probe produced the failure this design prevents: a well-formed product, HTTP 200, and the wrong product, because the request had silently exited through the wrong country. Amount and currency as separate fields is what makes that detectable rather than plausible.

Product
{
  "platform": "walmart",
  "id": "18210919718",
  "title": "…",
  "price": { "amount": 219.00, "currency": "USD" },
  "rating": 4.3,
  "reviewCount": 1083,
  "availability": "in_stock",
  "fetchedAt": "2026-09-04T18:11:07.402Z"
}

Call one and see.

Every endpoint publishes its credit cost in /openapi.json, so an agent can work out what a call costs before it makes it.