Korea Bid Price Benchmark (낙찰률 분포) — Where Winning Bids Land
Pricing
from $100.00 / 1,000 benchmark groups
Korea Bid Price Benchmark (낙찰률 분포) — Where Winning Bids Land
Award-rate distributions for Korean public tenders: p10/median/p90 plus a target band, grouped by category, agency, region or contract size. Construction awards cluster inside about one percentage point; goods spread over nineteen. Computed from Public Procurement Service (조달청) award data.
Pricing
from $100.00 / 1,000 benchmark groups
Rating
0.0
(0)
Developer
Atomo Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Korea Bid Price Benchmark (낙찰률 분포) — Where Winning Bids Actually Land
Every other Korean procurement dataset hands you rows. This one hands you the number you were going to compute from them anyway: where the award rate clusters for your category, your agency, your contract size.
The award rate (낙찰률) is the winning bid as a percentage of the predetermined price. Any single award tells you almost nothing. The distribution tells you everything — and it is not remotely uniform:
| Category | Size | n | Target band (p25–p75) | Spread (p10→p90) |
|---|---|---|---|---|
| Construction | 200M–1B KRW | 289 | 90.26 – 90.45 % | 0.56 %p |
| Construction | 50M–200M KRW | 734 | 90.16 – 90.48 % | 0.99 %p |
| Services | 10M–50M KRW | 565 | 88.08 – 92.72 % | 11.47 %p |
| Goods | under 10M KRW | 342 | 80.61 – 97.02 % | 33.48 %p |
30-day sample, 5,000 awards, taken 2026-09-04.
Read that top row again. For a mid-size construction contract, half of all winners land inside a 0.2 percentage-point window. Bid outside it and you are not competing — you are donating an entry. Meanwhile small goods tenders spread across 33 points, which is its own useful finding: there is no band to hit, so stop trying to shave basis points and compete on something else.
You cannot see either fact from a single record.
What you get
One record per group:
{"category": "Construction","amount_band": "200M-1B KRW","sample_size": 289,"award_rate_p10": 90.13,"award_rate_p25": 90.26,"award_rate_median": 90.35,"award_rate_p75": 90.45,"award_rate_p90": 90.69,"award_rate_min": 84.21,"award_rate_max": 99.90,"award_rate_stdev": 1.12,"target_band_pct": { "low": 90.26, "high": 90.45 },"band_width_pct_points": 0.56,"median_award_krw": 329834500,"total_award_krw": 118421563000,"median_bidder_count": 21.0,"max_bidder_count": 412,"period_start": "2026-08-05","period_end": "2026-09-04","source": "조달청 나라장터 (Public Procurement Service, Korea) via data.go.kr"}
target_band_pct is the interquartile range — the window half of all winners landed in.
band_width_pct_points is p90 − p10, and it is the honesty check: a wide value means
there is no reliable band here and the median should not be trusted as a target.
Input
| Field | Type | Notes |
|---|---|---|
groupBy | array | category, agency, region, amount_band — combine freely |
lookbackDays | integer | Sampling window. Default 30 |
endDate | date | Sample up to this date. Defaults to today |
categories | array | goods, construction, service, foreign |
agencyKeywords | array | Restrict to agencies matching these, e.g. 서울특별시 |
minSampleSize | integer | Groups smaller than this are dropped. Default 20 |
maxSamples | integer | Awards to collect before computing. Default 5,000 |
Each dimension you add to groupBy splits the sample further, so widen
lookbackDays when you cut finely — ["agency", "amount_band"] over 30 days will
drop most groups for want of a sample. Groups below minSampleSize are discarded
rather than reported, because a percentile from nine records is a guess wearing a
decimal point.
Awards with no award rate — negotiated contracts, design competitions — are excluded from every statistic rather than counted as zero.
Who this is for
- Bidders setting a price. Filter to your agency and size band, take the target band, and you know the window before you commit
- Bid-support and estimating tools that need a defensible reference rate rather than a house rule of thumb
- Analysts measuring how competitive a market segment actually is —
band_widthandmedian_bidder_counttogether say more than any single tender - AI agents that need a calibrated prior on Korean procurement pricing
Built on the same data as Korea Tender Winners (낙찰자 현황) — use that Actor for the individual awards, this one for the distribution they form.
Notes
Source. 조달청 낙찰정보서비스,
published on Korea's national open-data portal under an unrestricted licence
(이용허락범위 제한 없음). Every record carries a source field and the exact period
it was computed over.
This is an API client, not a scraper. Data comes from the government's own REST API with a registered key. The g2b.go.kr website is never touched.
No personal data. Output is aggregate statistics only — no company is named, and the underlying records are stripped of CEO names, phone numbers and street addresses before they are ever counted.
These are observed distributions, not predictions. They describe what winning bids did over the sampled period. Statutory floors, agency practice and formulas change; re-run rather than caching a band and trusting it next quarter.
Development
export G2B_SERVICE_KEY='...' # data.go.kr 인증키 (다른 g2b Actor와 같은 키)apify push # 배포
집계 로직은 src/main.py에 있다. 원천 필드가 바뀌면 src/normalize.py부터 볼 것.