Two Chinese used-car markets, one in yuan and one in dollars
Guazi API returns live Guazi data as clean JSON for guazi The primary endpoint, search, returns cars records including clue id, title, year, city and mileage km.
10 active endpoints, on 1, 2 and 3 credit tiers.
- POST/guazi/v1/search
- POST/guazi/v1/detail
- POST/guazi/v1/brands
- POST/guazi/v1/series
- POST/guazi/v1/cities
- POST/guazi/v1/price_bands
- POST/guazi/v1/listing_ids
- +3 more
What Guazi endpoints does ReefAPI ship?
10 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Guazi API
8 of 10 endpoints, ready to run
Live domestic listings by city market, brand, model series and guazi's own price band. Each row carries the asking price in yuan, the odometer in kilometres, the registration year, the city the car is actually in, the inspection badge and the thumbnail — and the city you pass is a MARKET, not a location filter, which is the one thing to understand before you read the rows.
// Press "Try it" and this pane shows exactly what the // live site returned this second — including an empty // result, if that is the truth. No key, no account.
How the Guazi API works
Guazi is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 440 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Decide whether a Chinese car is worth importing
The two marketplaces answer different questions, and the useful integration uses both: the domestic one for what cars actually cost in China, the export one for what it would cost to land one, with the condition disclosures an importer needs.
{}The brand slugs the search filter accepts, with their Chinese names. Pass one back to the series action for that brand's model-series slugs.
{"city": "bj", "brand": "benz", "series": "benz-e"}Forty rows a page with the price in yuan, the odometer, the registration year and the city each car is really in. This is the domestic market price, which is the number the export price should be judged against.
{"id": "<id from a search row>"}Insurance-claim count, ownership-transfer count, inspection grade, appearance score, trim and every photo. Spend this on the cars you shortlisted.
{"brand": "mercedes-benz"}The same marque on the export side, priced FOB in dollars with a condition grade and a seller type on every row.
{"id": "<id from an export row>"}The masked VIN, the accident, flood and fire flags, the steering side and the city the car sits in — the disclosures that decide whether a car is importable at all.
A Chinese car priced in both markets, with its claim history, inspection grade and damage disclosures attached, from a marque name and nothing else.
curl -X POST https://api.reefapi.com/guazi/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"city":"bj"}'{
"ok": true,
"data": { … },
"meta": {
"api": "guazi",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Two marketplaces, two currencies, and the identifier one of them will not give you
Measured against the live source on 2026-10-11 across fourteen domestic facets and eleven export facets. Five of these go against us, and the first two will corrupt data silently rather than erroring.
Guazi sells nationwide into each city, so a search scoped to Beijing legitimately returns cars sitting in Shenyang, and one scoped to Shanghai returned cars from nine different cities. The filter is not broken and the rows are not wrong — the city you pass is the buyer's market. Every row carries its own city, which is where that car actually is. If you need strictly one location, filter on the row's city, not on the request.
On the car we measured, the page's structured data says Shenzhen while the car is in Suzhou — and guazi's own plain-text mirror of the same page agrees with Suzhou. One field is the browsing market, the other is where the car is. We publish the car's real location as city and expose the other as market_city, so the difference is visible instead of quietly wrong in your database.
The seventeen-character number appears nowhere on a domestic listing — not under a Chinese label, not under an English one. So vin comes back null with a flag saying the source does not publish it, rather than filled with something that looks like a VIN. On the export side guazi publishes the first three and last four characters; the middle is not on the page at all, so that mask is the honest maximum and it arrives as vin_masked. The identifier you can actually join on domestically is the listing id, which round-trips unchanged between search and detail.
A fixed-price export row publishes an FOB asking price. An auction row publishes the CURRENT BID in the same field — we measured thirty dollars on a 2023 Hyundai Palisade with 39,900 km, while every other facet's cheapest car that minute was between three and thirty-four thousand. Reading that as a market price would be wrong by three orders of magnitude, so the two are split: price_usd for an asking price, current_bid_usd for a live bid, and price_kind naming which one you are holding.
A domestic detail record carries the number of insurance claims against the car and the number of times it has changed owner, guazi's condition grade, an appearance score out of a hundred and whether an official two-hundred-point inspection report exists. An export record goes further and states no-accident, no-flood and no-fire explicitly, each as its own flag, next to an A-to-D grade. These are the fields an importer actually buys, and they came back on every car we sampled.
China quotes used cars in 万 — units of ten thousand yuan — and distance in 万公里. A listing reading 14.43 and 10.94 is 144,300 yuan with 109,400 km on it. Nothing in this engine returns the source's bare figure: prices arrive as absolute yuan and mileage as absolute kilometres, and the price bands are converted too, so band price12 reports 130,000 to 180,000 rather than 13 to 18. The export side carries the dollar price alongside guazi's own yuan exchange rate, so you can reconcile the two markets yourself.
Forty rows a page, pages one to twenty, and page twenty-one returns nothing on every facet we tried — even where the source's own headline count was forty-three thousand. The way deeper is narrower: brand, then model series, then price band. A series-plus-band facet returned seven cars and said so, which is what a real narrow result looks like rather than a padded grid. The export side is tighter still: twenty rows per facet and no second page at all, because its own filter and page links do not work without running its JavaScript. We expose none of those parameters rather than accept one the source would silently ignore.
Brand returned only that marque; model series only that series; each price band's rows all fell inside the yuan range guazi declares for it, on four separate bands. The filters the source silently ignores — body type, fuel, year, an arbitrary price — are not offered at all, because a filter that is accepted and then dropped is worse than one that does not exist.
A city slug that does not exist returns NOT_FOUND. A real city with nothing in stock returns success with an empty list and a reported total of zero. Those are different facts and they are reported differently, so a typo cannot read as 'guazi has no cars there'. A dead listing id likewise returns NOT_FOUND with the source's own refusal behind it, which lets a sync close the row instead of retrying it.
Guazi publishes its own crawler index of every live domestic listing: thirteen pages of roughly ten thousand ids, each with the date it was last updated — about 127,000 cars. Pull the ids, diff the dates against what you stored, and spend a detail call only on what moved. It is priced by the rows it returns, so a full page costs five credits rather than the ten thousand a one-by-one walk would.
Domestic titles, cities, colours and engine descriptions come back in Chinese as guazi publishes them; nothing is machine-translated, because a translation we invented is a value we cannot stand behind. The brand and city directories give you both the Latin slug and the Chinese name. The export marketplace is written in English by guazi itself, including the options sheet, which is why it is the easier of the two to put in front of a non-Chinese-speaking team.
What people build with Guazi
The jobs this data is most often used for.
endpoints
credits per call
Pricing and assortment teams use Guazi to search live guazi listings.
Brand-protection teams use Guazi to get everything guazi publishes about one car by `id` (a `c…` listing id from `search` or `listing….
Retail analysts use Guazi to get every car brand guazi carries, with its guazi slug (`value`) for `search`'s `brand` filter, C….
Catalog enrichment teams use Guazi to get every series (车系) guazi lists for one brand, with the slug for `search`'s `series` filter.
What Guazi data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 440 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/guazi/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"city":"bj"}'import requests
r = requests.post(
"https://api.reefapi.com/guazi/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"city": "bj"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Guazi.
Get a free key →What is the Guazi API?▾
Guazi API is a ReefAPI endpoint group for guazi It returns live JSON through POST requests under /guazi/v1.
Is the Guazi API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Guazi calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Guazi login or account?▾
No login to Guazi is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Guazi data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Guazi API use?▾
Guazi actions currently cost 1-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Guazi from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call guazi actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the Guazi API a Guazi scraper?▾
It is the managed alternative to a DIY Guazi scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same guazi back as clean JSON.
Why does my Guazi scraper keep getting blocked?▾
Most Guazi scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked calls are free.
5 More APIs APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Guazi, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 439 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-10-11.