Skip to content

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 as value_basis (so 2200000 with value_basis=current is 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 example 8A, SDVOSBC, WOSB).
  • pricing_type: pin one contract pricing type (for example FIRM 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 returns 400. 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, or obligated. Your value and the comparables are both read on this basis.
  • sample_limit: how many comparable contracts to return, nearest to your value, 0 to 25 (default 10). 0 returns the rank and distribution with no contract list.
  • date_from / date_to: YYYY-MM-DD bounds on action_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, 0 to 100 (the share of comparable contracts at or below your value). null if 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 pin pricing_type when 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, percentiles with p10 through p90). Present inline so the call is self-contained. Percentiles are null when fewer than min_sample_size contracts back the set.
  • comparable_sample: up to sample_limit real 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 a usaspending_permalink to 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 , naics or value missing, value not a valid dollar amount or not positive, naics not 6 digits, a psc not 1 to 4 alphanumeric, an unrecognized set_aside code or pricing_type (returned with the valid list), a date_from after date_to, an unknown query parameter, an invalid value_basis, a malformed date, or a query too broad to evaluate in time (narrow with psc, 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 chosen value_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 pin psc and pricing_type for the meaningful read.
  • Contract grain: modifications are collapsed to one contract before ranking, so a heavily modified contract counts once.
  • comparable_sample returns the contracts nearest your value, not the largest. Raise sample_limit for a wider ladder, or set it to 0 when you only need the rank.

A REST API and MCP server for U.S. federal procurement data.

Get a free key, emailed instantly, or follow the quickstart.

Found something wrong, missing or confusing on this page?

Press Ctrl + Enter to send a note. Highlight text first and it travels with your note.