
Daangn Used Goods Search
Search 당근마켓 used listings by Korean region and keyword so you can benchmark prices or spot arbitrage before building a resale or local-commerce side project.
Overview
Daangn Used Goods Search is an agent skill for the Idea phase that queries 당근마켓 used listings by region and keyword from a Python script.
Install
npx skills add https://github.com/nomadamas/k-skill --skill daangn-used-goods-searchWhat is this skill?
- Resolves Korean place names via Daangn’s region keyword API with exact-dong, Seoul depth-3, and fallback selection
- Fetches listing data over HTTP with JSON and HTML paths and formats prices in 원
- Standalone Python 3 script using urllib—no extra deps in the excerpt
- Agent-runnable CLI pattern for repeating the same search during validation
Adoption & trust: 605 installs on skills.sh; 5.4k GitHub stars; 2/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need localized secondhand price comps in Korea but manually scrolling 당근마켓 does not scale when your agent is exploring niches.
Who is it for?
Solo builders researching Korean local resale markets or pricing assumptions before building commerce or aggregator tools.
Skip if: Teams that need official APIs, guaranteed SLAs, or bulk scraping without reviewing Daangn’s terms and endpoint stability.
When should I use this skill?
You need 당근마켓 used listing data for a Korean region and keyword during research or pricing validation.
What do I get? / Deliverables
You get structured listing pulls with resolved region ids and formatted prices you can drop into spreadsheets, prompts, or validation notes.
- Terminal JSON or text listing output with formatted 원 prices
- Resolved Daangn region id for the queried place
Recommended Skills
Journey fit
Marketplace comps belong in the earliest research phase before you commit to inventory, pricing, or a scraping-based product. Regional keyword search against live listings is classic opportunity and pricing research, not shipping code.
How it compares
Use as a focused regional marketplace probe instead of generic web search or a full browser automation stack.
Common Questions / FAQ
Who is daangn-used-goods-search for?
Indie builders and agents working on Korea-local resale, pricing research, or arbitrage ideas who want scriptable 당근마켓 search.
When should I use daangn-used-goods-search?
During Idea research when you need used-goods comps by dong or city, or during Validate pricing when you are sanity-checking margins against live listings.
Is daangn-used-goods-search safe to install?
Review the Security Audits panel on this Prism page and treat the skill as untrusted network code that calls third-party endpoints before running it with secrets on your machine.
SKILL.md
READMESKILL.md - Daangn Used Goods Search
#!/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): params = [] effective = None path = '/kr/buy-sell/' if args.region: effective = resolve_region(args.region) path = '/kr/buy-sell/all/' params.append(('in', f"{effective['name']}-{effective['id']}")) params.append(('search', args.keyword)) if args.only_on_sale: params.append(('only_on_sale','true')) params.append(('_data','routes/kr.buy-sell._index')) url = 'https://www.daangn.com' + path + '?' + urllib.parse.urlencode(params) data = fetch_json(url) arr = (((data.get('allPage') or {}).get('fleamarketArticles')) or [])[:args.limit] print_json({ 'source': url, 'effective_region': effective or data.get('region'), 'count': len(arr), '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'), 'url': absolute(a.get('href') or a.get('webUrl')), } for a in arr] }) def cmd_detail(args): u = args.url.rstrip('/') + '/?_data=routes%2Fkr.buy-sell.%24buy_sell_id' data = fetch_json(u); p = data.get('product') or data.get('article') or data print_json({'source': u, 'product': p}) p=argparse.ArgumentParser(description='Daangn used-goods read-only search/detail') sub=p.add_subparsers(dest='cmd', required=True) s=sub.add_parser('search'); s.add_argument('keyword'); s.add_argument('--region'); s.add_argument('--limit',type=int,default=10); s.add_argument('--only-on-sale',action='store_true',default=True); 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) --- name: daangn-used-goods-search description: 당근 중고거래 공개 웹 데이터 표면으로 키워드·지역 기반 매물 검색과 상세 조회를 수행한다. 로그인/채팅/찜/구매 자동화는 제외한다. license: MIT metadata: category: marketplace locale: ko-KR phase: v1 --- # Daangn Used-Goods Search ## What this skill does 당근 중고거래 공개 Remix `_data` JSON route를 사용해 매물 목록과 상세 정보를 읽기 전용으로 조회한다. 최종 사용자는 자연어로 요청해도 되고, 필요하면 아래의 Python helper를 직접 실행한다. 외부 패키지나 k-skill-proxy 없이 Python 표준 라이브러리만 사용한다. ## When to use - "당근에서 맥북 찾아봐" - "합정동 아이폰 매물 검색" - "이 당근 중고거래 URL 상세 봐줘" ## When not to use - 당근 계정 로그인이 필요한 작업 - 채팅, 찜, 거래 제안, 문의, 지원, 예약, 계약, 구매처럼 상대방 또는 계정에 영향을 주는 작업 - CAPTCHA/봇 차단/로그인벽 우회가 필요한