ruten API & Scraper
ruten API returns live ruten data as clean JSON for ruten Developers reach for it when they need to track product listings, prices, availability, variants and reviews without maintaining one-off scraping code or separate API contracts.
🤖 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.
If you were about to build or fix a ruten 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, product_detail. 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.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/ruten/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "iphone",
"max_results": 3
}
}{
"ok": true,
"meta": {
"api": "ruten",
"endpoint": "search",
"mode": "live",
"latency_ms": 2327.2,
"record_count": 3,
"bytes": 3161,
"cache_hit": false,
"upstream_requests": 2,
"charged_credits": 3,
"version": "1.0.0",
"request_id": "bf3741d28f284642"
},
"data": {
"results": [
{
"product_id": "22526947132485",
"title": "適用於蘋果iphone12pro max國行主板iphone13pro max拆機無修主板12 13mini 14pro",
"url": "https://www.ruten.com.tw/item/22526947132485/",
"price": 7600,
"price_range": {
"min": 7600,
"max": 21375
},
"price_scope": "variant_range",
"buy_now_price": 7600,
"current_bid": null,
"currency": "TWD",
"listing_type": "fixed_price",
"image": "https://a.rimg.com.tw/c1/2d0/514/qtauejxkfrik8/4/45/22526947132485_224_m.jpg",
"images": [
"https://a.rimg.com.tw/c1/2d0/514/qtauejxkfrik8/4/45/22526947132485_224_m.jpg"
],
"seller": {
"id": "21605736",
"name": null,
"nickname": null
},
"stock_quantity": 1506,
"stock_status": 3,
"available": null,
"sold_quantity": 0,
"shipping_cost": 55,
"closed_at": null,
"posted_at": "2025/06/24 13:35:28",
"gtin": null,
"brand": null,
"country": "tw"
},
{
"product_id": "22519483205517",
"title": "二手Apple蘋蜾iPhone8 11 se2 XR Xs正品原裝鹹魚優品三網通手嘰",
"url": "https://www.ruten.com.tw/item/22519483205517/",
"price": 6165,
"price_range": {
"min": 6165,
"max": 6165
},
"price_scope": "listing",
"buy_now_price": 6165,
"current_bid": null,
"currency": "TWD",
"listing_type": "fixed_price",
"image": "https://a.rimg.com.tw/c1/213/da0/mattiebeatrice8/b/8d/22519483205517_662_m.jpg",
"images": [
"https://a.rimg.com.tw/c1/213/da0/mattiebeatrice8/b/8d/22519483205517_662_m.jpg"
],
"seller": {
"id": "21608137",
"name": null,
"nickname": null
},
"stock_quantity": 3600,
"stock_status": 3,
"available": null,
"sold_quantity": 0,
"shipping_cost": 60,
"closed_at": null,
"posted_at": "2025/05/09 21:43:08",
"gtin": null,
"brand": null,
"country": "tw"
},
{
"product_id": "22519483190903",
"title": "Apple蘋蜾 iPhone X 二手蘋蜾X 國行全網通 xs 蘋蜾7 8P 8 7plus",
"url": "https://www.ruten.com.tw/item/22519483190903/",
"price": 6270,
"price_range": {
"min": 6270,
"max": 6270
},
"price_scope": "listing",
"buy_now_price": 6270,
"current_bid": null,
"currency": "TWD",
"listing_type": "fixed_price",
"image": "https://a.rimg.com.tw/c1/213/da0/mattiebeatrice8/2/77/22519483190903_964_m.jpg",
"images": [
"https://a.rimg.com.tw/c1/213/da0/mattiebeatrice8/2/77/22519483190903_964_m.jpg"
],
"seller": {
"id": "21608137",
"name": null,
"nickname": null
},
"stock_quantity": 2400,
"stock_status": 3,
"available": null,
"sold_quantity": 0,
"shipping_cost": 60,
"closed_at": null,
"posted_at": "2025/05/09 21:41:29",
"gtin": null,
"brand": null,
"country": "tw"
}
],
"count": 3,
"query": "iphone",
"page": 1,
"page_size": 3,
"source_total": 785383,
"source_limit": 4000,
"source_rows": 3,
"excluded_unqualified": 0,
"has_more": true,
"country": "tw"
}
}What the ruten API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Pricing teams call search to pull structured data. | none | |
| product_detail | Marketplace operators call product_detail to pull structured data. | none |
Call search from your stack
curl -X POST https://api.reefapi.com/ruten/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"iphone","max_results":3}'import requests
r = requests.post(
"https://api.reefapi.com/ruten/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "iphone",
"max_results": 3
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/ruten/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "iphone",
"max_results": 3
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.ruten.search with {"query":"iphone","max_results":3}.Who uses this API and why
- Pricing teams use ruten to pull structured data.
- Marketplace operators use ruten to pull structured data.
- Catalog enrichment teams use ruten to track product listings, prices, availability, variants and reviews, all from one ReefAPI key and credit pool.
Questions developers ask before integrating
What is the ruten API?
ruten API is a ReefAPI endpoint group for ruten It returns live JSON through POST requests under /ruten/v1.
Is the ruten API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. ruten calls use the same shared credit balance as every other ReefAPI engine.
Do I need a ruten login or account?
No login to ruten 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 ruten 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 ruten API use?
ruten actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call ruten from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call ruten actions with the same key, credit pool and JSON envelope used by normal REST requests.
Is the ruten API a ruten scraper?
It is the managed alternative to a DIY ruten 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 ruten back as clean JSON.
Why does my ruten scraper keep getting blocked?
Most ruten 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.