Korea's neighbourhood second-hand market, one dong at a time
The Karrot API returns 당근 (daangn.com), Korea's neighbourhood second-hand marketplace, as clean JSON in four actions.
4 active endpoints, on 1 and 3 credit tiers.
- POST/karrot/v1/search
- POST/karrot/v1/detail
- POST/karrot/v1/regions
- POST/karrot/v1/categories
What Karrot (당근) endpoints does ReefAPI ship?
4 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Karrot (당근) API
4 of 4 endpoints, ready to run
Every current listing in one Korean neighbourhood, with prices in won
// 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 Karrot (당근) API works
Karrot (당근) 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 438 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.
From a Korean neighbourhood name to a full listing record
Karrot is a neighbourhood market, so every search starts from a dong. Three calls take you from a place name to one listing's complete record.
{ "query": "역삼" }Karrot's own neighbourhood list, filtered by the Korean name. Seeded with region_id 6035 it returned that dong plus 30 adjacent ones (31 rows) in 0.8 s.
{ "region_id": "6035", "price_max": 20000, "on_sale_only": true }105 listings under ₩20,000 out of 276 in the neighbourhood, none above the cap and none reserved or sold. Every answer carries match_scope so you know how the keyword was matched.
{ "listing_id": "<listing_id from step 2>" }The full record: category, dong down to province, view / favourite / chat / comment counts, every photo, the seller's declared spec rows and the 매너온도 manner score. 10 of 10 ids taken out of search resolved, each returning the same id.
A dong, a filtered shortlist and a complete listing record — in three calls, in Korean won, with no Karrot account and no browser.
curl -X POST https://api.reefapi.com/karrot/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"region_id":"6035"}'{
"ok": true,
"data": { … },
"meta": {
"api": "karrot",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}What one Karrot neighbourhood actually returns
Karrot is not a national catalogue - it is one dong at a time, ranked by distance from it. These are the counts from a single run on 2026-10-06, so you can see the shape of an answer before you spend a credit.
| Call | listings | what it tells you |
|---|---|---|
| 역삼동 (region_id 6035), no filter | 276 | The whole neighbourhood feed. Prices ran from ₩0 (a 나눔 giveaway) to ₩41,000,000; status was 268 on sale, 5 reserved, 3 sold |
| 역삼동, price_max 20,000 | 105 | 0 of 105 rows were above the cap |
| 역삼동, price_min 200,000 | 53 | 0 of 53 rows were below the floor |
| 역삼동, category_id 1 (디지털기기) | 19 | Category narrows hard: 도서 (id 9) returned 2 in the same minute |
| 역삼동, on_sale_only | 268 | 0 of 268 rows were reserved or sold |
| 신정3동 (region_id 1197), no filter | 270 | A different neighbourhood, a different feed: category_id 1 → 17, price_max 10,000 → 93 |
Measured 2026-10-06 on the live site. A Karrot feed is distance-ranked, so the rows in a 역삼동 search include neighbouring dong - 11 distinct dong names appeared in those 276 rows, and each row says which one it is in. Classified listings come and go, so the counts above are dated, not a promise.
Measured on the live site, 2026-10-06
Karrot is narrow on purpose: one neighbourhood per call, no nationwide search, no sort, no paging. These are the numbers from the acceptance run, including the ones that go against us.
South Korea only. Korean text, prices in Korean won (KRW). ₩0 is a real price — a 나눔 giveaway.
The 중고거래 second-hand section. Karrot's separate cars and property properties are not covered.
258–286, variable by neighbourhood (5 neighbourhoods measured: 258, 270, 276, 278, 284). One page per call — the source publishes no sort and no paging.
id, title, URL, description, price, status, instant-buy, dong, posted and bumped: 276/276. Photo 275/276. Seller's pinned meeting point 58/276 (optional on Karrot).
id, title, URL, description, price, status, category, region, view / favourite / chat counts, times, photos, seller, recommended listings: 15/15. Seller's declared spec rows 5/15. Manner score 15/15.
Search row vs the listing's own record: price identical 15/15, title identical 15/15.
price_max 20,000 → 105/276, 0 over the cap · price_min 200,000 → 53, 0 under the floor · category 1 → 19, category 9 → 2 · on_sale_only → 268, 0 reserved or sold. Re-checked in a second neighbourhood.
6/6 on each of search, keyword search, detail, regions and categories. 7/7 keyword searches answered from Karrot's own index.
search 1.7 s · keyword search 2.4 s · detail 1.4 s · regions 1.1 s · categories 1.0 s.
Public listing facts only. Seller nickname, profile page, photo and 매너온도 score; no phone, no chat handle, no address beyond the public dong, no comment text.
What people build with Karrot (당근)
The jobs this data is most often used for.
endpoints
credits per call
Resale and price-intelligence teams track second-hand prices for phones, laptops and designer bags dong by dong across Seoul.
Market-entry and demand researchers size Korea's local resale supply by category before committing to a city.
Reverse-logistics and recommerce buyers watch a neighbourhood feed for underpriced inventory and reserved-to-sold turnover.
Apps serving Korean users resolve a neighbourhood name to Karrot's own region id and mirror its 21-category taxonomy.
What Karrot (당근) 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 438 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/karrot/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"region_id":"6035"}'import requests
r = requests.post(
"https://api.reefapi.com/karrot/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"region_id": "6035"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Karrot (당근).
Get a free key →What does the Karrot API cover?▾
The 중고거래 second-hand section of 당근 (daangn.com) in Korea. search returns one neighbourhood's current listings, detail returns one listing in full, regions turns a Korean neighbourhood name into the id search needs, and categories lists the 21 category ids. Cars (당근 중고차) and property are separate Karrot properties and are not covered. Text is Korean and prices are Korean won.
Why do I have to pass a region_id? Can I search all of Korea?▾
No, and that is Karrot itself rather than a limit of this API. 당근 is a neighbourhood market: its own search requires a neighbourhood and ranks by distance from it, so there is no nationwide query to make. Call regions first - give it a known id to get that dong's full name plus the 30 neighbourhoods Karrot lists as adjacent to it, or call it with no id for Karrot's own popular-region list - then pass the id to search. 6035 is 서울 강남구 역삼동.
Is there paging or a sort order?▾
No. Karrot serves one page per neighbourhood with its own ordering, and it publishes no sort and no page parameter, so this API does not invent either. The page size is not fixed: 258, 266, 270, 274, 276, 278, 284 and 286 listings were all measured on different neighbourhoods and runs. has_more is always false and next_page is always null, honestly.
How does the keyword search work, and what is match_scope?▾
Every answer names where the keyword was matched. match_scope "site_index" means Karrot's own search answered and you are getting its ranking untouched - that is what 7 of 7 keyword searches returned in the acceptance run (아이폰, 에어팟, 의자, 캠핑, 노트북, 컴퓨터, 책장 across five neighbourhoods, 268 to 286 listings each). match_scope "region_feed" means Karrot's keyword index was not answering at that moment, so the API read the live neighbourhood feed instead and matched your keyword against each listing's title and body; the rows are real live listings, there are simply fewer of them because a neighbourhood feed is a narrower pool than Karrot's own keyword search. You are never handed an empty list without a live check behind it: zero results only come back with filtered_empty_confirmed true and control_total_results showing how many listings that neighbourhood was serving at the time.
Are prices reliable, and why is a price sometimes 0 or null?▾
₩0 is a real Karrot price - a 나눔 giveaway - and it is returned as 0, not as missing. null means the source did not publish a plain number for that listing, and nothing is ever inferred from the title. Prices are plain won, never the 만 (ten-thousand) unit. On 15 listings spread across one feed, including the first four boosted rows, the price in the search row and the price on the listing's own record matched on 15 of 15, and so did the title.
What do I get about the seller?▾
The public shop-level facts Karrot's own listing page shows: nickname, profile page URL, profile photo and the 매너온도 manner score (36.5 is the neutral starting point; it was present on 15 of 15 listings measured). Nothing else. No phone number, no chat handle, no address beyond the public dong label, and no comment text or commenter identities - only how many comments a listing has.
Which fields are often empty, and why?▾
The seller's pinned meeting point was present on 58 of 276 listings (21%) - it is optional on Karrot. The seller's declared spec rows (properties, e.g. 사이즈 → L,66) were present on 5 of 15 listings (33%). A search row carries no category because Karrot's search surface publishes none; detail does, and it was filled on 15 of 15. Rather than ship a field that never works, a handle Karrot does not publish is left out of the response entirely.
Do the filters actually narrow the results, or are they ignored?▾
Each one was checked against the same neighbourhood's unfiltered count in the same run, and then row by row. In 역삼동 (276 unfiltered): price_max 20,000 → 105 rows with 0 above the cap; price_min 200,000 → 53 with 0 below the floor; category_id 1 → 19 and category_id 9 → 2; on_sale_only → 268 with 0 reserved or sold. The same two filters were re-checked in a second neighbourhood (신정3동, 270 unfiltered) so a filter that happens to match everything cannot pass as working.
What is the Karrot (당근) API?▾
Karrot (당근) API is a ReefAPI endpoint group for korea's neighbourhood second-hand market, one dong at a time: listings, prices in won and full listing records. It returns live JSON through POST requests under /karrot/v1.
Is the Karrot (당근) API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Karrot (당근) calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Karrot (당근) login or account?▾
No login to Karrot (당근) 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 Karrot (당근) 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 Karrot (당근) API use?▾
Karrot (당근) 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 Karrot (당근) from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call karrot actions with the same key, credit pool and JSON envelope used by normal REST requests.
99 Classifieds & Second-hand APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Karrot (당근), 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 437 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-06.