# Made-in-China Easy Sourcing API — live B2B buying requests (RFQs) from sourcing.made-in-china.com: what importers are asking to purchase right now, in their own full text, with quantity, buyer country, post date and expiry date. Keyword search, 27 category boards, buyer-country and recency filters, real pagination — clean JSON, no login.

> Search live buying requests posted by Made-in-China buyers — the demand side of the marketplace. Each row is a purchase someone is asking for right now: their FULL request text (this board does not truncate it), how many they want, which country they are buying from, the day they posted and the day the request expires. Filter by keyword, category, buyer country and recency; page through up to 100 requests per call. Omit `query` to browse the whole open board.
> ReefAPI engine `made-in-china` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/made-in-china/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed or blocked calls are free.
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http, `Authorization: Bearer <key>`) and your assistant can call these actions directly.

## Endpoints

### POST /made-in-china/v1/rfq_search — 1 credit
Search live buying requests posted by Made-in-China buyers — the demand side of the marketplace. Each row is a purchase someone is asking for right now: their FULL request text (this board does not truncate it), how many they want, which country they are buying from, the day they posted and the day the request expires. Filter by keyword, category, buyer country and recency; page through up to 100 requests per call. Omit `query` to browse the whole open board.

**Parameters:**
- `query` (string, optional) — What the buyer is asking for, in the buyer's own words ('solar panel', 'coffee machine', 'cnc machining'). Leave it out to browse the whole open board (2,200,000+ requests), which is what `category` and `posted_within` are for.
- `category` (string, optional) — Restrict to one of the 27 top-level sourcing categories. Call the `categories` action for the id list. Combines with `query`.
- `buyer_country` (enum, optional) — Country of the BUYER. Made-in-China publishes a fixed facet of ten countries plus 'other'; two-letter codes and plain names ('US', 'uk', 'south africa') are accepted and mapped. Anything outside that set is REJECTED rather than accepted, because the site silently treats an unknown region as 'other' and would hand you a plausible list of the wrong buyers. [one of: united_states, india, nigeria, united_kingdom, pakistan, australia, canada, south_africa, ghana, brazil, other]
- `posted_within` (enum, optional) — Only requests posted inside this window. 'older_than_7d' is the site's own inverse facet — it returns requests OLDER than a week, not newer. Board-wide '24h' was 730 requests when measured, which is the daily new-demand flow. [one of: 12h, 24h, 3d, 7d, older_than_7d]
- `page` (integer, optional, default 1) — Result page, 1-based (max 20000). Page forward with `next_page` from the response. Asking for a page past the end returns NOT_FOUND — the site itself would silently re-serve the last page instead.
- `limit` (integer, optional, default 20) — Requests per page, 1-100 (default 20). This is a real upstream page size, not a client-side trim, so a bigger number is one call rather than several — 100 rows arrive in a single ~187 KB response.
- `include_expired` (boolean, optional, default false) — Include requests the site marks expired or closed. Off by default: an expired request cannot be quoted on, so it is history rather than demand. 0 of 100 rows measured on the fresh board were expired, so this normally removes nothing.

**Returns:** results[]{rfq_id, title, description, url, quantity, quantity_text, quantity_unit, buyer{name, country, country_code, email_confirmed}, posted_at, expires_at, expired, closed, quotes_left, quotes_allowed, budget, budget_currency, category_id, origin_site, image, has_attachments}, query, page, page_size, returned, total_estimate, pages_available, has_more, next_page, filters_applied

**Example request body:**
```json
{
  "query": "solar panel"
}
```

### POST /made-in-china/v1/categories — 1 credit
The 27 top-level sourcing categories of the buying-request board, with the ids that `rfq_search`'s `category` parameter takes. Read live from the board's own category rail, so a new or renamed category appears without a code change.

**Parameters:**
- `query` (string, optional) — Filter categories whose name contains this text (case-insensitive). Omit for all 27.

**Returns:** categories[]{id, name, url}, returned, source

## More
- Try it live, no code: https://reefapi.com/playground?engine=made-in-china
- Human docs page: https://reefapi.com/docs/made-in-china
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
