Price position (where do I sit)
Pass your own contract or bid value plus the same scope filters as the benchmark, and this returns three things in one call: where your number ranks (its percentile within the comparable set), the comparable distribution inline, and the actual federal contracts nearest your value. It answers "given my number, where do I stand, and does that position look justified" without you downloading a single row of USAspending data.
Use it as the bid-positioning read: a percentile alone can mislead, so the endpoint hands back the real awards around your value. An 80th-percentile that looks alarming often turns out justified once you see that the contracts near yours are clearly larger-scope work.
This is a price-analysis / market-position read, not "the price to win." Where you should bid depends on the specific competition, the evaluation method, and your cost structure. This tells you where your number sits in the historical field.
It does not score your win probability, predict the outcome, or tell you to bid or walk. It shows you the evidence, the rank and the real contracts behind it, and leaves the call where it belongs: with your capture team. That is the point. Serious companies do not outsource the bid decision to a black box; they want the facts, laid out, to decide for themselves.
Parameters
naics and value are both required. Unknown parameters return 400. The scope filters behave exactly as on /api/v1/pricing/benchmark.
naics: exactly 6 digits. Required.value: your contract or bid amount in dollars, a positive number. Required. Plain or formatted input is accepted (2200000,2200000.50, or$2,200,000). It is read on the same basis asvalue_basis(so2200000withvalue_basis=currentis compared against each comparable's current total value).psc: Product/Service Code, 1 to 4 alphanumeric, exact. The scope lever, strongly recommended: it is what makes the comparable set like-for-like rather than a whole-industry mix.set_aside: set-aside code, exact (for example8A,SDVOSBC,WOSB).pricing_type: pin one contract pricing type (for exampleFIRM FIXED PRICE). Recommended for an apples-to-apples position, since pricing type shifts value dramatically.agency: narrow the comparable set to a single buying agency, given as a name, acronym, or CGAC code (Navy,Department of Defense,1700). A department or a component both work, matching on the awarding agency or its sub-agency; an unrecognized agency returns400. Use it to position your value against the agency you are actually bidding into, since the same NAICS prices differently across agencies.value_basis:current(default),potential, orobligated. Yourvalueand the comparables are both read on this basis.sample_limit: how many comparable contracts to return, nearest to your value,0to25(default10).0returns the rank and distribution with no contract list.date_from/date_to:YYYY-MM-DDbounds onaction_date, soft-clamped to the coverage floor.
Response
A flat object:
naics,naics_description,value(echoed),value_basis,min_sample_size.position:percentile_rank: your value's rank in the comparable set,0to100(the share of comparable contracts at or below your value).nullif nothing matched.n_comparable: the size of the comparable set your rank is computed against.interpretation: a ready-to-read sentence, including a nudge to pinpricing_typewhen you have not, and a low-confidence note when the comparable set is small.comparable_distribution: the same percentile block the benchmark returns for this exact filter set (sample_size,outliers_ge_1b,suppressed,percentileswithp10throughp90). Present inline so the call is self-contained. Percentiles arenullwhen fewer thanmin_sample_sizecontracts back the set.comparable_sample: up tosample_limitreal contracts, the ones nearest your value, sorted low to high so they read as a ladder around your number. Each row:contract_award_unique_key,recipient_name,recipient_uei,award_id_piid,value(on the chosen basis),product_or_service_code,type_of_contract_pricing,awarding_sub_agency_name,period_of_performance_start_date,period_of_performance_current_end_date,description, and ausaspending_permalinkto the full record.filters_applied,window,_sources.
Example
curl -H "Authorization: Bearer $GOVCON_API_KEY" \
"https://govconapi.com/api/v1/pricing/position?naics=541512&psc=R425&value=2200000&sample_limit=2"
{
"naics": "541512",
"naics_description": "COMPUTER SYSTEMS DESIGN SERVICES",
"value": 2200000.0,
"value_basis": "current",
"min_sample_size": 20,
"position": {
"percentile_rank": 47,
"n_comparable": 670,
"interpretation": "Your current value of $2,200,000 is at the 47th percentile of 670 comparable contracts (47% at or below yours, 53% above). Tip: pin pricing_type (and psc) so the comparison is apples-to-apples."
},
"comparable_distribution": {
"sample_size": 670,
"outliers_ge_1b": 0,
"suppressed": false,
"percentiles": { "p10": 76345, "p25": 588242, "p50": 2462617, "p75": 8534288, "p90": 28145019 }
},
"comparable_sample": [
{
"contract_award_unique_key": "CONT_AWD_2032H523F00260_2050_HHSN316201200076W_7529",
"recipient_name": "CYBERDATA TECHNOLOGIES, INC.",
"recipient_uei": "GMLCLKXPK8S3",
"award_id_piid": "2032H523F00260",
"value": 2193279,
"product_or_service_code": "R425",
"type_of_contract_pricing": "FIRM FIXED PRICE",
"awarding_sub_agency_name": "Internal Revenue Service",
"period_of_performance_start_date": "2023-04-14",
"period_of_performance_current_end_date": "2024-01-13",
"description": "THIS TASK ORDER PROVIDES APPLICATION OPERATIONS AND MAINTENANCE (O&M) SERVICES, APPLICATION DEVELOPMENT & DATABASE ADMINISTRATION SERVICES, ANCILLARY SUPPORT SERVICES AND APPLICATION SUPPORT SERVICES",
"usaspending_permalink": "https://www.usaspending.gov/award/CONT_AWD_2032H523F00260_2050_HHSN316201200076W_7529/"
},
{
"contract_award_unique_key": "CONT_AWD_HC102823F0499_9700_HC102817D0001_9700",
"recipient_name": "MICROSOFT CORPORATION",
"recipient_uei": "FMVPEWNJGLM1",
"award_id_piid": "HC102823F0499",
"value": 2205707,
"product_or_service_code": "R425",
"type_of_contract_pricing": "FIRM FIXED PRICE",
"awarding_sub_agency_name": "Defense Information Systems Agency",
"period_of_performance_start_date": "2023-05-15",
"period_of_performance_current_end_date": "2026-05-14",
"description": "DEFENSE LANGUAGE INSTITUTE FOREIGN LANGUAGE CENTER (DLIFLC) MICROSOFT UNIFIED SUPPORT",
"usaspending_permalink": "https://www.usaspending.gov/award/CONT_AWD_HC102823F0499_9700_HC102817D0001_9700/"
}
],
"filters_applied": { "naics": "541512", "value_basis": "current", "psc": "R425", "date_from": "2024-10-01" },
"window": { "plan_window_days": 1825, "earliest_searchable": "2024-10-01", "clamped": true, "reason": "Default search window is the earliest data we carry. This is a data coverage floor, not a plan limit." },
"_sources": ["usaspending_fpds"]
}
More examples
Just the rank and distribution, no contract list (sample_limit=0):
curl -H "Authorization: Bearer $GOVCON_API_KEY" \
"https://govconapi.com/api/v1/pricing/position?naics=541512&psc=R425&value=2200000&sample_limit=0"
The tightest apples-to-apples position, scope fully pinned (NAICS + PSC + pricing type):
curl -H "Authorization: Bearer $GOVCON_API_KEY" \
"https://govconapi.com/api/v1/pricing/position?naics=541512&psc=R425&pricing_type=FIRM%20FIXED%20PRICE&value=2200000"
Where a $5M bid sits within a set-aside lane:
curl -H "Authorization: Bearer $GOVCON_API_KEY" \
"https://govconapi.com/api/v1/pricing/position?naics=541512&set_aside=8A&value=5000000"
Plans and limits
/pricing/benchmark and /pricing/position are Pro capabilities: they compose FPDS award
history into a derived price analysis, so they sit with the rest of the derived layer. There is no
per-day pricing quota; they ride the standard per-key rate limit.
| Plan | Access |
|---|---|
| Free | not included (402) |
| Developer | not included (402) |
| Pro | included |
The raw inputs stay on the base tier: /pricing/labor-rates (GSA CALC
ceiling rates) is available on any paid plan.
Errors
400,naicsorvaluemissing,valuenot a valid dollar amount or not positive,naicsnot 6 digits, apscnot 1 to 4 alphanumeric, an unrecognizedset_asidecode orpricing_type(returned with the valid list), adate_fromafterdate_to, an unknown query parameter, an invalidvalue_basis, a malformed date, or a query too broad to evaluate in time (narrow withpsc,set_aside,pricing_type, or a tighter date range).401, no API key.402, a free or Developer key. This endpoint requires the Pro plan.429, too many requests.
Error bodies are JSON with a detail string, for example a missing value:
{ "detail": "value is required (your contract or bid amount in dollars)." }
If no comparable contracts match, the call still returns 200: percentile_rank is null, n_comparable is 0, and comparable_sample is empty. Loosen the filters.
Notes for integrators
- The comparable set is defined by your scope filters (
naics+psc+set_aside+pricing_type+ window) on the chosenvalue_basis, and the rank is your value's position within it. The tighter you scope, the more like-for-like the position; a bare NAICS mixes very different work, so pinpscandpricing_typefor the meaningful read. - Contract grain: modifications are collapsed to one contract before ranking, so a heavily modified contract counts once.
comparable_samplereturns the contracts nearest your value, not the largest. Raisesample_limitfor a wider ladder, or set it to0when you only need the rank.