Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the che168 API page →
Brand Stores and Specialty Retail

che168 API & Scraper

che168 API returns live che168 data as clean JSON for che168 The primary endpoint, search, returns matching records including listing id, title, price cny, price wan cny and new car price cny.

11 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

Developers reach for it when they need to read a retailer's own catalogue with full product detail, variants, price and stock without maintaining one-off scraping code or separate API contracts. If you were about to build or fix a che168 scraper, this API is the maintained alternative — it returns the same data as clean JSON, with the proxies, rotation and anti-bot handling already solved. This page covers the live example, request shape, response shape and available actions: search, car_detail, car_summary, car_photos. Every request uses the same ReefAPI envelope, one API key and one shared credit pool, so it fits alongside the rest of your data stack.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/che168/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "city": "beijing",
    "limit": 20
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "che168",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 18116.3,
    "record_count": 20,
    "bytes": 495738,
    "cache_hit": false,
    "stop_reason": "complete",
    "upstream_requests": 2,
    "filters": {
      "city": "beijing",
      "sort": "default",
      "page": 1
    },
    "source_url": "https://www.che168.com/beijing/a0_0msdgscncgpi1ltocsp1exx0/",
    "city_ids": [
      110100
    ],
    "city_resolved": "beijing",
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "0f230c402b874e5b",
    "queue_ms": 2.1,
    "fetched_at": "2026-10-11T12:01:41.097Z"
  },
  "data": {
    "results": [
      {
        "listing_id": 59776000,
        "url": "https://www.che168.com/dealer/201407/59776000.html",
        "title": "奔驰G级 2022款 G 500",
        "price_cny": 1518000,
        "price_wan_cny": 151.8,
        "new_car_price_cny": 2053700,
        "mileage_km": 13000,
        "mileage_wan_km": 1.3,
        "first_registration": "2022-08",
        "year": 2022,
        "city": "北京",
        "city_id": 110100,
        "province_id": 110000,
        "brand_id": 36,
        "series_id": 60,
        "spec_id": 54727,
        "dealer_id": 201407,
        "dealer_note": "12年黑金会员",
        "image": "https://2sc2.autoimg.cn/escimg/g33/M03/2F/AE/440x330_q87_c42_autohomecar__ChxpVWqlLAaADDHhAAm6FzFid0s612.jpg",
        "listed_at": "2026-10-10T13:06:26Z",
        "tags": [
          "90天回购保障"
        ],
        "is_new_car": false,
        "is_certified": false,
        "has_extended_warranty": false,
        "is_factory_certified": false
      },
      {
        "listing_id": 60094644,
        "url": "https://www.che168.com/dealer/201407/60094644.html",
        "title": "揽胜 2023款 3.0 L6 360PS 盛世版",
        "price_cny": 958000,
        "price_wan_cny": 95.8,
        "new_car_price_cny": 1550100,
        "mileage_km": 27000,
        "mileage_wan_km": 2.7,
        "first_registration": "2023-01",
        "year": 2023,
        "city": "北京",
        "city_id": 110100,
        "province_id": 110000,
        "brand_id": 49,
        "series_id": 69,
        "spec_id": 57781,
        "dealer_id": 201407,
        "dealer_note": "12年黑金会员",
        "image": "https://2sc2.autoimg.cn/escimg/g34/M08/7E/C2/440x330_q87_c42_autohomecar__ChxpWGrJxh-ANSrnAAk29_inxXs953.jpg",
        "listed_at": "2026-10-10T12:59:43Z",
        "tags": [
          "90天回购保障"
        ],
        "is_new_car": false,
        "is_certified": false,
        "has_extended_warranty": false,
        "is_factory_certified": false
      },
      {
        "listing_id": 59269937,
        "url": "https://www.che168.com/dealer/201407/59269937.html",
        "title": "Cayenne 2022款 Cayenne 3.0T 铂金版",
        "price_cny": 538000,
        "price_wan_cny": 53.8,
        "new_car_price_cny": 1105000,
        "mileage_km": 19000,
        "mileage_wan_km": 1.9,
        "first_registration": "2022-01",
        "year": 2022,
        "city": "北京",
        "city_id": 110100,
        "province_id": 110000,
        "brand_id": 40,
        "series_id": 172,
        "spec_id": 55408,
        "dealer_id": 201407,
        "dealer_note": "12年黑金会员",
        "image": "https://2sc2.autoimg.cn/escimg/g34/M0B/EA/A5/440x330_q87_c42_autohomecar__ChxpV2p1bT6AI7UyAAr57h2FW5E781.jpg",
        "listed_at": "2026-10-04T10:25:21Z",
        "tags": [
          "90天回购保障"
        ],
        "is_new_car": false,
        "is_certified": false,
        "has_extended_warranty": false,
        "is_factory_certified": false
      }
    ],
    "total_reported": null,
    "total_note": "che168 does not publish a result count. `pages_available` is the highest page its own pager links to; it saturates at 100 for broad filters, and page 101+ silently repeats page 100.",
    "pagination": {
      "page": 1,
      "per_page": 56,
      "returned": 20,
      "pages_available": 100,
      "has_more": true,
      "max_page": 100
    },
    "filters_applied": {
      "city": "beijing",
      "sort": "default",
      "page": 1
    },
    "city_ids_in_results": [
      110100
    ],
    "year_filter": null,
    "city_padding": false,
    "source_url": "https://www.che168.com/beijing/a0_0msdgscncgpi1ltocsp1exx0/"
  }
}
Actions

What the che168 API does

ActionDescriptionConcrete use caseKey params
searchSearch che168's live used-car inventory. Filter by city, brand/series (pinyin from `suggest`), vehicle class, price band, registration age, mileage, gearbox, displacement, seller type (private / dealer / certified dealer), body structure, colour, fuel, seats, emission standard, drivetrain, induction and dealer, then sort and page through. Returns a normalized card per car (price in CNY, mileage in km, first-registration month, city, ids, photo, tags). che168 publishes no result total, so `pagination.pages_available` is the page count its own pager offers; it serves at most 100 pages (56 cars each) per filter. `keyword` does a free-text search instead — Chinese text works best, and che168 ignores the other filters in keyword mode.Pricing and assortment teams call search to search che168's live used-car inventory.city, brand, series, vehicle_class, keyword, ...
car_detailEverything che168 publishes about one listing, merged from its page and three of its JSON endpoints: price (CNY and 万), mileage in km, first-registration month, brand/series/trim ids, dealer name + rating + seller type, owner-transfer count, inspection / insurance / warranty expiry, engine, vehicle class, colour, fuel grade, drivetrain, emission standard, every photo, and che168's own condition grade. The 17-character VIN is NOT published by che168 — `vin` is null and `vehicle_token` carries che168's opaque identifier instead.Brand-protection teams call car_detail to get everything che168 publishes about one listing, merged from its page and three of its JSON end….listing_id, include_report, include_photos
car_summaryThe cheap one-listing lookup: che168's own ~1 KB JSON record for a listing id — title, brand, series, trim id, price, mileage, registration date, city, dealer name + rating + seller type, finance terms, main photo, watch count. Use this instead of `car_detail` when you are enriching thousands of ids and do not need the archive table, photo list or condition report. Returns NOT_FOUND with che168's own wording when a listing has been sold or delisted.Retail analysts call car_summary to get the cheap one-listing lookup.listing_id
car_photosEvery photo URL che168 holds for a listing, from its own photo JSON (~3 KB) rather than the 350 KB page. Cheapest way to pull imagery in bulk.Catalog enrichment teams call car_photos to get every photo URL che168 holds for a listing, from its own photo JSON (~3 KB) rather than the 3….listing_id
car_optionsThe comfort/safety equipment che168 lists for one car (lane keeping, adaptive cruise, 360 camera, heated steering, head-up display, …) as a normalized list with che168's option ids.Pricing and assortment teams call car_options to get the comfort/safety equipment che168 lists for one car (lane keeping, adaptive cruise, 360 cam….listing_id, spec_id
condition_reportche168's third-party condition and accident report for one listing: overall grade, per-item inspection results (structural damage, flood, fire, major accident), the claim type, report photos and the link to the full report, plus che168's own condition wording and demand indices. Honest-empty: cars che168 has not had inspected return `report_published: false` instead of an invented clean bill of health — measured on 9 listings across three che168 surfaces, all 9 said false, so treat the report as a bonus and the demand block as the reliable part. Pass `vehicle_token` (from `car_detail`) to keep this cheap: che168 validates that token and will not answer without it, so if you omit it we have to load the ~350 KB listing page to read it off.Brand-protection teams call condition_report to get che168's third-party condition and accident report for one listing.listing_id, dealer_id, vehicle_token
model_specsThe full factory specification sheet for one trim (`spec_id`) straight from Autohome's model database: trim name, manufacturer, MSRP when new, body structure, class, engine, gearbox, fuel, seats and ~15 grouped sections of named parameters. This is the `trim` dimension — pair it with `search`/`car_detail`, which both return `spec_id`.Retail analysts call model_specs to get the full factory specification sheet for one trim (`spec_id`) straight from Autohome's model….spec_id
suggestResolve a keyword to che168's own brand/series entries, each with the LIVE number of cars on sale and the real minimum and maximum asking price — a market-size probe in one call ('how many BMW 3-series are for sale in China right now, and in what price band'). It returns che168's numeric `series_id`/`brand_id`, NOT the pinyin slugs `search` filters on: use `brands` for those.Catalog enrichment teams call suggest to resolve a keyword to che168's own brand/series entries, each with the LIVE number of cars on….query
dealer_carsOne dealer's whole live inventory on che168, paged. Same normalized card shape as `search`. Use `dealer_id` from any search result or listing detail.Pricing and assortment teams call dealer_cars to get one dealer's whole live inventory on che168, paged.dealer_id, city, sort, page, limit
brandsche168's brand catalogue: all 618 brand slugs with their Chinese names. These slugs are what `search`'s `brand` filter takes, and `suggest` does not provide them. Pass `brand` to get that brand's model-series slugs instead (94 for BMW), which `search`'s `series` filter takes.Brand-protection teams call brands to get che168's brand catalogue.brand
citiesche168's complete market list — every city and province it sells in, with the area id, the pinyin slug `search` takes and the Chinese name. Read live off the site, so it cannot drift from what `search` accepts.Retail analysts call cities to get che168's complete market list.near_city_id
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/che168/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"city":"beijing","limit":20}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.che168.search with {"city":"beijing","limit":20}.
Use cases

Who uses this API and why

  • Pricing and assortment teams use che168 to search che168's live used-car inventory.
  • Brand-protection teams use che168 to get everything che168 publishes about one listing, merged from its page and three of its JSON end….
  • Retail analysts use che168 to get the cheap one-listing lookup.
  • Catalog enrichment teams use che168 to get every photo URL che168 holds for a listing, from its own photo JSON (~3 KB) rather than the 3….
  • Pricing and assortment teams use che168 to get the comfort/safety equipment che168 lists for one car (lane keeping, adaptive cruise, 360 cam….
FAQ

Questions developers ask before integrating

What is the che168 API?

che168 API is a ReefAPI endpoint group for che168 It returns live JSON through POST requests under /che168/v1.

Is the che168 API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. che168 calls use the same shared credit balance as every other ReefAPI engine.

Do I need a che168 login or account?

No login to che168 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 che168 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 che168 API use?

che168 actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call che168 from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call che168 actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the che168 API a che168 scraper?

It is the managed alternative to a DIY che168 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 che168 back as clean JSON.

Why does my che168 scraper keep getting blocked?

Most che168 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.

docs / che168

che168

che168

base /che168/v111 endpoints
post/che168/v1/car_detail2 credits

Everything che168 publishes about one listing, merged from its page and three of its JSON endpoints: price (CNY and 万), mileage in km, first-registration month, brand/series/trim ids, dealer name + rating + seller type, owner-transfer count, inspection / insurance / warranty expiry, engine, vehicle class, colour, fuel grade, drivetrain, emission standard, every photo, and che168's own condition grade. The 17-character VIN is NOT published by che168 — `vin` is null and `vehicle_token` carries che168's opaque identifier instead.

ParameterAllowed / rangeDescription
listing_idrequired—che168 listing id (`infoid`) — the number in a listing URL `/dealer/<dealer_id>/<listing_id>.html`, returned as `listing_id` by `search`.
include_report = trueoptional—Also fetch che168's third-party condition/accident report and demand indices (2 extra upstream calls, ~0.5 KB). Most listings have no published report — the response then says `report_published: false`.
include_photos = trueoptional—Include the full photo list. Photos come from the listing page itself, so turning this off saves no bandwidth; set it false only to shrink the payload.
Try in playground →
post/che168/v1/car_summary1 credit

The cheap one-listing lookup: che168's own ~1 KB JSON record for a listing id — title, brand, series, trim id, price, mileage, registration date, city, dealer name + rating + seller type, finance terms, main photo, watch count. Use this instead of `car_detail` when you are enriching thousands of ids and do not need the archive table, photo list or condition report. Returns NOT_FOUND with che168's own wording when a listing has been sold or delisted.

ParameterAllowed / rangeDescription
listing_idrequired—che168 listing id (`infoid`) — the number in a listing URL `/dealer/<dealer_id>/<listing_id>.html`, returned as `listing_id` by `search`.
Try in playground →
post/che168/v1/car_photos1 credit

Every photo URL che168 holds for a listing, from its own photo JSON (~3 KB) rather than the 350 KB page. Cheapest way to pull imagery in bulk.

ParameterAllowed / rangeDescription
listing_idrequired—che168 listing id (`infoid`) — the number in a listing URL `/dealer/<dealer_id>/<listing_id>.html`, returned as `listing_id` by `search`.
Try in playground →
post/che168/v1/car_options1 credit

The comfort/safety equipment che168 lists for one car (lane keeping, adaptive cruise, 360 camera, heated steering, head-up display, …) as a normalized list with che168's option ids.

ParameterAllowed / rangeDescription
listing_idrequired—che168 listing id (`infoid`) — the number in a listing URL `/dealer/<dealer_id>/<listing_id>.html`, returned as `listing_id` by `search`.
spec_idoptional—Factory trim id. Optional — che168 resolves the options from the listing id alone; passing it can return a slightly fuller list.
Try in playground →
post/che168/v1/condition_report2 credits

che168's third-party condition and accident report for one listing: overall grade, per-item inspection results (structural damage, flood, fire, major accident), the claim type, report photos and the link to the full report, plus che168's own condition wording and demand indices. Honest-empty: cars che168 has not had inspected return `report_published: false` instead of an invented clean bill of health — measured on 9 listings across three che168 surfaces, all 9 said false, so treat the report as a bonus and the demand block as the reliable part. Pass `vehicle_token` (from `car_detail`) to keep this cheap: che168 validates that token and will not answer without it, so if you omit it we have to load the ~350 KB listing page to read it off.

ParameterAllowed / rangeDescription
listing_idrequired—che168 listing id (`infoid`) — the number in a listing URL `/dealer/<dealer_id>/<listing_id>.html`, returned as `listing_id` by `search`.
dealer_idoptional—Dealer id from `search`/`car_detail`. che168's report endpoint wants it alongside the listing id; omit it and we send 0, which still answers for most listings.
vehicle_tokenoptional—The opaque vehicle token from `car_detail` (`vehicle_token`). Optional.
Try in playground →
post/che168/v1/model_specs1 credit

The full factory specification sheet for one trim (`spec_id`) straight from Autohome's model database: trim name, manufacturer, MSRP when new, body structure, class, engine, gearbox, fuel, seats and ~15 grouped sections of named parameters. This is the `trim` dimension — pair it with `search`/`car_detail`, which both return `spec_id`.

ParameterAllowed / rangeDescription
spec_idrequired—Autohome factory trim id (`specid`) — returned as `spec_id` by `search` and `car_detail`. Identifies the exact model year + trim, not the individual car.
Try in playground →
post/che168/v1/suggest1 credit

Resolve a keyword to che168's own brand/series entries, each with the LIVE number of cars on sale and the real minimum and maximum asking price — a market-size probe in one call ('how many BMW 3-series are for sale in China right now, and in what price band'). It returns che168's numeric `series_id`/`brand_id`, NOT the pinyin slugs `search` filters on: use `brands` for those.

ParameterAllowed / rangeDescription
queryrequired—Brand, series or model text. Chinese matches best ('宝马' = BMW, '奥迪A4L'); Latin spellings return fewer matches.
Try in playground →
post/che168/v1/dealer_cars2 credits

One dealer's whole live inventory on che168, paged. Same normalized card shape as `search`. Use `dealer_id` from any search result or listing detail.

ParameterAllowed / rangeDescription
dealer_idrequired—che168 dealer id, from `search` or `car_detail`.
city = chinaoptional—Market to search: a che168 city pinyin ('beijing', 'shanghai', 'chengdu'), or 'china' for the whole country. Common English and Chinese names are accepted too ('peking', '上海'). Call the `cities` action for the complete live list (372 cities/provinces).
sort = defaultoptionaldefault · newest · oldest_listing · price_asc · price_desc · mileage_asc · mileage_desc · year_ascResult ordering. Every option here was verified by reading the ordering che168 actually returned (see the engine's BUILD-LOG). che168's sort bar offers no 'newest car first' — combine `min_year` with `newest` for that.
page = 1optional1–100Result page. che168 serves 56 cars per page and stops at page 100, so one filter reaches at most ~5 600 cars — narrow the filter (city, brand, price band) to go deeper.
limit = 56optional1–56Cap the cards returned (1-56).
Try in playground →
post/che168/v1/brands1 credit

che168's brand catalogue: all 618 brand slugs with their Chinese names. These slugs are what `search`'s `brand` filter takes, and `suggest` does not provide them. Pass `brand` to get that brand's model-series slugs instead (94 for BMW), which `search`'s `series` filter takes.

ParameterAllowed / rangeDescription
brandoptional—Brand slug. Given, the action returns that brand's series slugs; omitted, it returns the brand list.
Try in playground →
post/che168/v1/cities1 credit

che168's complete market list — every city and province it sells in, with the area id, the pinyin slug `search` takes and the Chinese name. Read live off the site, so it cannot drift from what `search` accepts.

ParameterAllowed / rangeDescription
near_city_idoptional—Optional che168 city id (e.g. 110100 = Beijing). Adds the neighbouring markets che168 suggests for it, which is how buyers widen a search.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.