
Daangn Cars Search
- 1.9k installs
- 7k repo stars
- Updated August 2, 2026
- nomadamas/k-skill
Daangn Cars Search is a read-only Python CLI that retrieves used car listings and details from Daangn's public web data surfaces using region filters, price bounds, and keyword matching.
About
Daangn Cars Search performs read-only vehicle discovery and detail lookup via Daangn's public Remix _data JSON routes. It extracts filters (keyword, region, price) from user requests, resolves region names to internal IDs, queries category-specific search endpoints, and returns structured listings with source URLs and applied regions. No authentication, messaging, or transaction automation is included. Uses only Python standard library and supports natural language input or direct script invocation.
- Region resolver maps user-provided place names to internal Daangn region IDs with multi-candidate fallback logic
- Read-only _data route access avoids login walls and bot detection; fails gracefully without circumvention
- Preserves source URLs and effective_region in all outputs to surface real-time inventory variance
- Search and retrieve used car listings from Daangn Cars by region and price filters
- Search and retrieve used car listings from Daangn Cars by region and price filters
Daangn Cars Search by the numbers
- 1,881 all-time installs (skills.sh)
- +252 installs in the week ending Aug 5, 2026 (Skillselion tracking)
- Ranked #18 of 479 Web3 & Blockchain skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
daangn-cars-search capabilities & compatibility
Network traffic only - no paid APIs
- Capabilities
- region name resolution · vehicle search by filters · listing detail retrieval · price range filtering · natural language input · json parsing · url preservation
- Use cases
- web scraping · data analysis · research
- Runs
- Runs locally
- Pricing
- Free
What daangn-cars-search says it does
당근중고차 공개 Remix `_data` JSON route를 사용해 차량 목록과 상세 정보를 읽기 전용으로 조회한다.
외부 패키지나 k-skill-proxy 없이 Python 표준 라이브러리만 사용한다.
결과는 실시간 재고/공고 상태와 달라질 수 있으므로 source URL을 함께 제시한다.
npx skills add https://github.com/nomadamas/k-skill --skill daangn-cars-searchAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 1.9k |
|---|---|
| repo stars | ★ 7k |
| Security audit | 2 / 3 scanners passed |
| Last updated | August 2, 2026 |
| Repository | nomadamas/k-skill ↗ |
What it does
Search and retrieve used car listings from Daangn Cars by region and price filters
Who is it for?
Finding used vehicles by region and price in South Korean Daangn marketplace,Automating research workflows that require current inventory snapshots with source preservation,Developers building Korean automotive data inte
Skip if: Account login, messaging, favorites, trade offers, inquiries, reservations, contracts, purchases,Scenarios requiring CAPTCHA bypass or bot detection evasion,Automated negotiation or transaction facilitation
When should I use this skill?
User requests 당근중고차 searches by region or price,Need to fetch details from a Daangn Cars URL,Building inventory pipelines requiring real-time snapshots with source attribution
What you get
Developers obtain structured vehicle listings with region resolution, price filtering, and source URLs in seconds via CLI or natural language.
- Structured JSON with title, price, price_text, region, status, driveDistance, carData, chatRoomCount, url
- Detail carPost raw JSON for single-listing queries
- effective_region field showing resolved geographic scope
By the numbers
- Uses Python standard library only - zero external package dependencies
- Supports region fallback: exact name match → Seoul depth=3 ward candidates → first result
- Outputs include 10 structured fields (title, price, price_text, region, status, driveDistance, carData, chatRoomCount, u
Files
Daangn Cars Search
What this skill does
당근중고차 공개 Remix _data JSON route를 사용해 차량 목록과 상세 정보를 읽기 전용으로 조회한다.
최종 사용자는 자연어로 요청해도 되고, 필요하면 아래의 Python helper를 직접 실행한다. 외부 패키지나 k-skill-proxy 없이 Python 표준 라이브러리만 사용한다.
When to use
- "당근중고차 합정동 레이 찾아봐"
- "당근에서 천만원 이하 중고차 검색"
- "이 당근 중고차 URL 상세 봐줘"
When not to use
- 당근 계정 로그인이 필요한 작업
- 채팅, 찜, 거래 제안, 문의, 지원, 예약, 계약, 구매처럼 상대방 또는 계정에 영향을 주는 작업
- CAPTCHA/봇 차단/로그인벽 우회가 필요한 작업
Prerequisites
- 인터넷 연결
- Python 3.9+
- 이 저장소 루트에서 실행하거나, 스크립트 경로를 절대경로로 지정
Data surfaces
- Region resolver:
https://www.daangn.com/kr/api/v1/regions/keyword?keyword=<지역명> - Search
_data:/kr/cars/?in=<지역명>-<id>&onlyOnSale=1&_data=routes/kr.cars._index - Detail
_data:<car-url>?_data=routes%2Fkr.cars.%24car_post_id
Workflow
1. 사용자 요청에서 키워드, 지역명, 가격/거래 유형 같은 필터를 추출한다. 2. 지역명이 있으면 region resolver로 내부 region id를 찾는다. 3. 목록 검색은 category별 _data route를 호출한다. 4. 상세 URL이 주어지면 category별 detail route 또는 공개 HTML 메타를 조회한다. 5. 결과를 짧게 정리하되 source URL과 적용 지역을 보존한다.
Commands
python3 daangn-cars-search/scripts/daangn_cars.py search "레이" --region "합정동" --limit 5
python3 daangn-cars-search/scripts/daangn_cars.py search --region "합정동" --price-max 10000000 --limit 5
python3 daangn-cars-search/scripts/daangn_cars.py detail "https://www.daangn.com/kr/cars/.../"Output fields
- title, price, price_text, region, status, driveDistance, carData, chatRoomCount, url
- detail: carPost 원문
Region handling
지역 필터가 있으면 먼저 당근 지역 검색 API로 내부 지역 id를 해석한다.
https://www.daangn.com/kr/api/v1/regions/keyword?keyword=합정동
→ 서울특별시 마포구 합정동, id=231
→ in=합정동-231동일한 지명이 여러 지역에 있으면 다음 우선순위로 선택한다.
1. 사용자가 입력한 문자열이 name, name1, name2, name3 중 하나와 정확히 맞는 후보 2. 서울 depth=3 동 단위 후보 3. 첫 번째 후보
응답에는 항상 effective_region 또는 실제 적용된 지역명을 포함한다. 사용자의 의도와 다른 지역으로 보이면 결과를 단정하지 말고 후보 확인을 요청한다. IP/쿠키 기본 위치에 의존하지 않는다.
Safety and scope
- 읽기 전용 검색/상세 조회만 수행한다.
- 로그인, 채팅, 찜, 거래 제안, 지원, 문의, 예약, 계약, 구매 자동화는 하지 않는다.
- 공개 웹 표면이 바뀌거나 빈 응답/봇 차단/로그인벽이 나오면 실패 모드로 보고하고 우회하지 않는다.
- 결과는 실시간 재고/공고 상태와 달라질 수 있으므로 source URL을 함께 제시한다.
Failure modes
- 당근의 Remix route 이름이나 JSON shape가 변경되면
_data조회가 실패할 수 있다. - 지역명이 넓거나 중복되면 다른 행정동이 선택될 수 있다.
- 검색 결과가 0건이어도 사이트 정책/지역 기본값/필터 조합 때문일 수 있으므로 source URL을 보존한다.
- 상세 조회는 삭제/종료/비공개 전환된 글에서 실패할 수 있다.
Done when
- 지역명이 있으면 지역 id를 해석하고 적용했다.
- 목록 조회 또는 상세 조회를 최소 1회 수행했다.
- 결과에 source URL과 effective region을 포함했다.
- 인증/거래성 액션은 수행하지 않았다.
#!/usr/bin/env python3
import argparse, json, re, sys, urllib.parse, urllib.request
from html import unescape
HEADERS = {"User-Agent":"Mozilla/5.0", "Accept":"application/json,text/html;q=0.9,*/*;q=0.8"}
def fetch_json(url):
req = urllib.request.Request(url, headers=HEADERS)
with urllib.request.urlopen(req, timeout=25) as r:
return json.load(r)
def fetch_text(url):
req = urllib.request.Request(url, headers={"User-Agent":"Mozilla/5.0", "Accept":"text/html"})
with urllib.request.urlopen(req, timeout=25) as r:
return r.read().decode('utf-8', 'ignore')
def won(v):
if v in (None, ''): return '-'
try: return f"{int(float(v)):,}원"
except Exception: return str(v)
def resolve_region(region):
if not region: return None
url = 'https://www.daangn.com/kr/api/v1/regions/keyword?keyword=' + urllib.parse.quote(region)
data = fetch_json(url)
locs = data.get('locations') or []
if not locs: raise SystemExit(f'지역 후보 없음: {region}')
# Exact dong/name match first, then Seoul depth-3, then first candidate.
exact = [x for x in locs if region in (x.get('name'), x.get('name1'), x.get('name2'), x.get('name3'))]
seoul = [x for x in locs if x.get('name1') == '서울특별시' and x.get('depth') == 3]
sel = (exact or seoul or locs)[0]
return sel
def region_param(sel):
return urllib.parse.quote(f"{sel['name']}-{sel['id']}")
def absolute(href):
if not href: return ''
if href.startswith('http'): return href
return 'https://www.daangn.com' + href
def print_json(obj):
print(json.dumps(obj, ensure_ascii=False, indent=2))
def cmd_search(args):
sel=resolve_region(args.region) if args.region else None
params=[]
if sel: params.append(('in', f"{sel['name']}-{sel['id']}"))
if args.only_on_sale: params.append(('onlyOnSale','1'))
if args.price_max: params.append(('priceMax', str(args.price_max)))
if args.price_min: params.append(('priceMin', str(args.price_min)))
params.append(('_data','routes/kr.cars._index'))
url='https://www.daangn.com/kr/cars/?'+urllib.parse.urlencode(params)
data=fetch_json(url); arr=((data.get('carAllPage') or {}).get('carPosts') or [])
if args.keyword:
arr=[a for a in arr if args.keyword.lower() in (a.get('title') or '').lower()]
arr=arr[:args.limit]
items=[{'title':a.get('title'),'price':a.get('price'),'price_text':won(a.get('price')),'region':(a.get('region') or {}).get('name'),
'status':a.get('status'),'driveDistance':a.get('driveDistance'),'carData':a.get('carData'),
'chatRoomCount':a.get('chatRoomCount'),'url':absolute(a.get('href'))} for a in arr]
print_json({'source':url,'effective_region':data.get('searchRegion') or sel,'count':len(items),'items':items})
def cmd_detail(args):
u=args.url.rstrip('/')+'/?_data=routes%2Fkr.cars.%24car_post_id'
data=fetch_json(u); print_json({'source':u,'carPost':data.get('carPost') or data})
p=argparse.ArgumentParser(description='Daangn cars read-only search/detail')
sub=p.add_subparsers(dest='cmd', required=True)
s=sub.add_parser('search'); s.add_argument('keyword', nargs='?'); s.add_argument('--region'); s.add_argument('--price-min',type=int); s.add_argument('--price-max',type=int); s.add_argument('--only-on-sale',action='store_true',default=True); s.add_argument('--limit',type=int,default=10); s.set_defaults(func=cmd_search)
d=sub.add_parser('detail'); d.add_argument('url'); d.set_defaults(func=cmd_detail)
args=p.parse_args(); args.func(args)
Related skills
How it compares
Pick daangn-cars-search for read-only 당근중고차 JSON inside agent workflows; skip it when you need authenticated dealership APIs or non-Korean inventory.
FAQ
Do I need a Daangn account to use this skill?
No. This skill reads only public web data surfaces via Remix _data routes. Account login, messaging, and transaction actions are explicitly excluded.
What happens if Daangn blocks my requests?
The skill reports failure without attempting CAPTCHA bypass or login circumvention. It preserves source URLs so you can verify results on the live site.
How accurate are the listings returned?
Results reflect the current state of public _data routes but may differ from live inventory due to real-time updates. Always check the source URL provided in output.
Is Daangn Cars Search safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.