SAM.gov Wage Determinations Scraper avatar

SAM.gov Wage Determinations Scraper

Pricing

from $4.45 / 1,000 wage determinations

Go to Apify Store
SAM.gov Wage Determinations Scraper

SAM.gov Wage Determinations Scraper

Scrape SAM.gov wage determinations: 95,000 Service Contract Act, Davis-Bacon and collective bargaining agreement determinations with the states and counties they cover, the occupation rates and the fringe benefits.

Pricing

from $4.45 / 1,000 wage determinations

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

ParseForge

Prevailing Wage Scraper - Davis-Bacon & SCA Rates

Every wage determination on SAM.gov as data: 85,426 Davis-Bacon construction decisions and 10,124 active Service Contract Act and collective bargaining determinations, with the counties they cover and every hourly rate they set. No login, no API key, no proxy, no browser. Export to CSV, JSON, Excel, or XML.

SAM.gov shows wage determinations one at a time and serves the rates as the Department of Labor's fixed-width text. This Actor reads the index, keeps what your filters ask for, and parses each determination into rows: occupation code, title and rate for Service Contract Act registers, or classification, rate, fringes and union agreement code for Davis-Bacon decisions.

Who uses itWhat they use wage determinations for
Federal contractors and subcontractorsBidding a job at the right labour rate before the solicitation closes
Construction estimatorsDavis-Bacon classification rates and fringes by county and construction type
Payroll and compliance teamsChecking that certified payroll matches the determination in force
Labour economists and unionsPrevailing rates by trade, county and year, with the union agreement behind each rate
GovCon software and data vendorsA normalised feed of determinations and revisions with stable numbers

What it does

The Department of Labor issues two kinds of determination, and SAM.gov indexes them separately:

  • Davis-Bacon (DBA): 85,426 general decisions for construction, one per state, county set and construction type (Building, Residential, Highway, Heavy). Rates come grouped under the union agreement or survey code that set them.
  • Service Contract Act (SCA) and collective bargaining agreements (CBA): 10,124 active determinations for service contracts, with a register of occupation codes and rates plus health and welfare, vacation and holiday requirements.

Every row carries the determination itself:

  • 🧾 Identity: number, short reference, type, revision number, active, standard and latest-revision flags, publication, modification and index dates.
  • πŸ—ΊοΈ Coverage: the states and counties the determination applies to, a statewide flag and the county count, plus the construction types for Davis-Bacon.
  • πŸ”— Links: the SAM.gov page and the API URL for the exact revision.
  • πŸ“„ The document (optional): the full determination text with the covered area as the Department writes it.
  • πŸ’΅ The rates (optional): every occupation or classification with its hourly rate, the fringes and the union agreement code, plus the lowest, median and highest rate in the determination. A Tennessee SCA register parsed to 346 occupation rates; a Pittsburgh Davis-Bacon decision to 35 classifications from $22.37 to $61.07.
  • πŸ₯ Fringe benefits (optional): the health and welfare hourly rate, the vacation schedule and the paid holidays.
  • πŸ“œ Executive order minimums (optional): the orders cited and the contractor minimum wage they set.
  • πŸ•“ Revision history (optional): every published revision with its date and whether it is still in force.

Every row contains: wdNumber, shortReferenceNumber, wdType, wdTypeCode, revisionNumber, isLatestRevision, isActive, isStandard, publishDate, modifiedDate, indexedDate, determinationYear, states, stateNames, counties, countyCount, isStatewide, constructionTypes, cbaNumber, alternateNumbers, wdUrl, apiUrl and scrapedAt.

What you can do with wage determination data

Price a construction bid.

Filter to Davis-Bacon, your state and county, and the construction type, then turn on the rates. Each classification comes with its base rate, its fringe rate and the union agreement code and date behind it, so the estimate traces back to a source.

Watch a determination for changes.

Revision history returns every published revision with its date. Schedule a weekly run on the determinations you follow and compare the revision number.

Build a rate table for a service contract.

Service Contract Act registers list every occupation code from Accounting Clerk I upward. Export them with the health and welfare rate and the holiday count and you have the labour section of the proposal.

Compare counties or trades.

Pull a state's decisions and use the lowest, median and highest rate on each row for a quick spread by county, or explode the rate rows to compare one trade across the state.

Why choose this scraper

What you get
Both registersDavis-Bacon and Service Contract Act in one schema, filtered together
Rates as rowsThe fixed-width text parsed into occupation and classification records, not left as a blob
The union agreement behind the rateDavis-Bacon rows carry the agreement code and its effective date
Wrapped names kept wholeA classification that runs over three lines comes back as one name, not a fragment
No key, no proxyPlain HTTP against SAM.gov's public endpoints; 300 determinations with rates in 11 seconds
Past the 10,000 ceilingSAM.gov caps a query at 10,000 records, so a state list is searched state by state

How it compares

No Apify Actor covers wage determinations. The SAM.gov actors on the Store return contract opportunities or entity registrations, which is a different file. Against SAM.gov's own site the difference is export and the parsed rate table.

FeatureParseForgesam.govSAM.gov opportunity actors
Davis-Bacon and SCA in one feedYesSeparate searchesNot covered
Occupation and classification rates parsedYesFixed-width textNo
Fringe benefits and holidays parsedYesIn the textNo
Revision historyYesOne page per revisionNo
County coverage as dataYesProseNo
Price per row$0.005Free, manual$0.003 to $0.008

What a wage determination looks like

{
"wdNumber": "PA20260001",
"shortReferenceNumber": "PA1",
"wdType": "Davis-Bacon Act",
"wdTypeCode": "DBA",
"revisionNumber": 6,
"isActive": "Yes",
"isStandard": "Yes",
"publishDate": "2026-08-20",
"modifiedDate": "2026-08-20",
"determinationYear": 2026,
"states": ["PA"],
"stateNames": ["Pennsylvania"],
"counties": ["Allegheny"],
"countyCount": 1,
"isStatewide": "No",
"constructionTypes": ["Building"],
"alternateNumbers": ["PA260001", "PA261", "PA20261", "PA0001"],
"wdUrl": "https://sam.gov/wage-determination/PA20260001/6",
"apiUrl": "https://sam.gov/api/prod/wdol/v1/wd/PA20260001/6",
"coveredArea": "Pennsylvania Counties of Allegheny",
"lastRevisionDate": "08/20/2026",
"rateLineCount": 35,
"lowestRateUsd": 22.37,
"medianRateUsd": 37.93,
"highestRateUsd": 61.07,
"classificationRates": [
{
"classification": "ASBESTOS WORKER/INSULATOR (INCLUDES THE APPLICATION OF ALL INSULATING MATERIALS, PROTECTIVE COVERINGS, COATINGS AND FINISHINGS TO ALL TYPES OF MECHANICAL SYSTEMS)",
"rateUsd": 46.5,
"fringesUsd": 29.43,
"group": "ASBE0002-001 (08/01/2024)"
},
{
"classification": "BOILERMAKER",
"rateUsd": 48.28,
"fringesUsd": 33.17,
"group": "BOIL0154-001 (01/01/2025)"
}
],
"executiveOrders": ["Executive Order 13658"],
"minimumWageUsd": 13.65,
"scrapedAt": "2026-08-27T19:19:20.148Z"
}

A Service Contract Act row looks the same down to wdUrl, then carries occupationRates (346 of them on determination 2015-4653), healthAndWelfareHourlyUsd (5.92), vacationText, holidaysText and holidayCount instead of the classification table.

Configure the run

Run it with no input for the newest determinations across both registers. Determination numbers, search terms and states go to SAM.gov's index; county, construction type and date filters are applied as each record is read.

The 100 most recently modified determinations:

{ "maxItems": 100 }

Davis-Bacon building rates for two states, with the classification table:

{
"wdTypes": ["DBA"],
"states": ["PA", "TX"],
"constructionTypes": ["Building"],
"includeOccupationRates": true,
"maxItems": 500
}

One determination with everything, including its revision history:

{
"wdNumbers": ["2015-4653"],
"includeDocument": true,
"includeOccupationRates": true,
"includeFringeBenefits": true,
"includeExecutiveOrders": true,
"includeRevisionHistory": true
}

Service Contract Act determinations covering one county:

{
"wdTypes": ["SCA"],
"states": ["TN"],
"countyContains": "Lawrence",
"includeFringeBenefits": true,
"maxItems": 200
}

Pricing

Pay-per-event. $5 per 1,000 wage determinations plus $0.02 per run start and $0.003 per index page. The blocks below are opt-in and charged only when the determination had something to give.

EventPriceWhen
wage-determination$0.005Every determination written
search-page$0.003Each index page of 100 read, never more than the rows written
wd-document$0.004The determination text attached
occupation-rates$0.006The rate table parsed into rows
fringe-benefits$0.004Health and welfare, vacation or holidays found
executive-order-minimums$0.003An executive order is cited
revision-history$0.004The revision list came back
RunApproximate cost
100 determinations, index fields only$0.53
500 Davis-Bacon decisions with rates$10.53
1,000 determinations with rates and fringes$15.03
10,000 determinations, index fields only$50.32

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 determinations as a preview. Upgrade your Apify plan to pull a whole state or register.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the SAM.gov Wage Determinations Scraper.
  3. Pick a type, a state or a determination number, tick the rate blocks, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab, or schedule a weekly run to catch revisions.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent the prevailing wage registers through the Model Context Protocol:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/sam-gov-wage-determinations-scraper"

Then ask: "What is the Davis-Bacon electrician rate in Allegheny County, Pennsylvania?", "Which SCA determination covers Lawrence County, Tennessee, and what is the health and welfare rate?" or "How many revisions has determination 2015-4653 had?"

Troubleshooting

Why did my state filter return fewer rows than SAM.gov shows?

Each state is searched as its own query, which is what keeps a slice under SAM.gov's 10,000 record ceiling. If a state has more active determinations than your maxItems, raise it or add a county or construction-type filter.

Why are the occupation rates empty on a Davis-Bacon row?

Davis-Bacon decisions have classifications, not occupation codes, so those rows fill classificationRates instead. Service Contract Act registers fill occupationRates. Neither block is charged when it found nothing.

Why is there no health and welfare rate on a construction decision?

Davis-Bacon carries fringes per classification rather than as a benefits section, so fringesUsd on each classification is where that money is. In a 300 row Davis-Bacon run the fringe block fired on 17 rows, which are the ones that do state a benefits section.

Why does a determination have no counties?

Statewide determinations cover the whole state; isStatewide says so and counties is empty by design.

Why is the run slow with the rate blocks on?

Each determination's document is a separate request. Index-only runs read 100 rows per request; with the rate blocks it is one request per row, and 300 determinations with rates took 11 seconds.

FAQ

QuestionAnswer
What is a wage determination?The Department of Labor's ruling on the minimum wages and fringe benefits a federal contractor must pay for a class of work in a place. Davis-Bacon covers construction, the Service Contract Act covers services.
How many are there?85,426 Davis-Bacon decisions and 10,124 active Service Contract Act and collective bargaining determinations at the time of the build.
Do I need a SAM.gov account or API key?No. Everything here comes from SAM.gov's public search index and its public wage determination endpoint.
Are superseded revisions included?Turn off "only active" to reach them, and use the revision history block to list every revision of a determination.
Can I get the rates as rows?Yes. Each determination carries occupationRates or classificationRates with one entry per rate line, plus the lowest, median and highest.
What is the group on a Davis-Bacon rate?The union agreement or survey code that set it, with the effective date, for example ELEC0005-004 (06/01/2025).
How current is the data?The index is live. During testing it carried determinations modified the same day.
Can I look up one determination number?Yes, with wdNumbers, or paste the SAM.gov URL into startUrls.
How many rows per run?Free plan: 10. Paid: as many as your filters match.
Is this an official SAM.gov product?No. It is unofficial and reads only public data.

Browse the full ParseForge collection for more scrapers.

πŸ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by SAM.gov, the General Services Administration or the Department of Labor. It reads only public data. Wage determinations are legal instruments: always confirm the determination and revision in force for your contract on SAM.gov before relying on a rate.