FHWA National Bridge Inventory Scraper
Pricing
from $0.04 / 1,000 bridge record extracteds
FHWA National Bridge Inventory Scraper
Extract FHWA InfoBridge / National Bridge Inventory bridge records by state, owner, condition, or exact bridge ID.
Pricing
from $0.04 / 1,000 bridge record extracteds
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Extract bridge records from the public FHWA InfoBridge / National Bridge Inventory map data endpoints.
What does this FHWA National Bridge Inventory Scraper do?
The FHWA National Bridge Inventory Scraper turns public InfoBridge bridge records into a clean Apify dataset.
It can scan bridges by state code or retrieve exact InfoBridge bridge IDs.
The actor is designed for infrastructure, civil engineering, insurance, and GIS workflows.
It uses HTTP requests against FHWA public endpoints and does not require login.
Who is it for?
- 🏗️ Civil engineering firms monitoring bridge assets.
- 🗺️ GIS teams enriching public infrastructure layers.
- 🏛️ Government vendors researching bridge owners and agencies.
- 🛡️ Insurance and infrastructure risk teams screening bridge age and condition.
- 📊 Data teams building recurring National Bridge Inventory extracts.
Why use it?
InfoBridge is powerful, but repeatable extraction from map workflows can be slow.
This actor gives you structured records with reproducible source URLs.
You can schedule it, call it through the API, and export JSON, CSV, Excel, or Parquet from Apify.
Data source
The actor uses FHWA LTBP InfoBridge.
InfoBridge is a public national repository for bridge performance and National Bridge Inventory data.
The actor currently uses the public map and bridge data endpoints visible from InfoBridge.
Data fields
| Field | Description |
|---|---|
bridgeId | InfoBridge NEW_BRIDGE_ID |
bridgeYearlyId | InfoBridge yearly bridge record ID |
structureNumber | NBI structure number |
stateCode | Numeric FHWA/NBI state code |
stateName | State name |
ownerAgency | Owning agency text |
yearBuilt | Construction year |
structureLength | Structure length from InfoBridge |
mainSpanMaterials | Main span material code and label |
mainSpanDesign | Main span design code and label |
bridgeCondition | G/F/P condition code when requested |
conditionLabel | Good, Fair, or Poor label |
detailUrl | Public InfoBridge detail page |
sourceUrl | Public JSON endpoint used by the actor |
scrapedAt | ISO timestamp |
How much does it cost to scrape FHWA National Bridge Inventory data?
This actor uses pay-per-event pricing.
You pay a small start fee and then a per-record fee for each saved bridge item.
The default input is intentionally small enough to make the first run inexpensive.
Input overview
The most common input is a state code and a maximum number of bridge records.
You can also pass exact InfoBridge bridge IDs when you already know the assets to monitor.
Input fields
stateCodes— numeric FHWA/NBI state codes, such as1for Alabama or48for Texas.bridgeIds— exact InfoBridgeNEW_BRIDGE_IDvalues.maxItems— maximum number of records to save.bridgeCondition— optional Good/Fair/Poor filter.ownerContains— optional owner agency text filter.includeCondition— fetch condition code for emitted records.requestDelayMs— polite request delay for InfoBridge.
Example input: first 100 Alabama bridges
{"stateCodes": [1],"maxItems": 100,"includeCondition": true,"requestDelayMs": 120}
Example input: poor-condition bridges
{"stateCodes": [1],"maxItems": 250,"bridgeCondition": "Poor","includeCondition": true}
Example input: exact bridge IDs
{"bridgeIds": [1, 2, 1000],"maxItems": 3,"includeCondition": true}
Example output
{"bridgeId": 1,"bridgeYearlyId": 26002063,"structureNumber": "DAPAMCRED0VBC77","stateCode": 1,"stateName": "Alabama","ownerAgency": "74-Army","yearBuilt": 1975,"structureLength": 23.3,"mainSpanMaterials": "3-Steel","mainSpanDesign": "19-Culvert","bridgeCondition": "P","conditionLabel": "Poor","detailUrl": "https://infobridge.fhwa.dot.gov/Data/BridgeDetail/26002063","sourceUrl": "https://infobridge.fhwa.dot.gov/Data/GetMapBridgeData?BridgeID=1","scrapedAt": "2026-07-06T00:00:00.000Z"}
How to run it
- Open the actor on Apify.
- Choose state codes or exact bridge IDs.
- Set
maxItemsto the number of records you need. - Optionally filter by condition or owner agency.
- Run the actor.
- Download the dataset in your preferred format.
State code tips
The input uses numeric FHWA/NBI state codes.
Examples include Alabama 1, California 6, Florida 12, New York 36, and Texas 48.
Use exact bridgeIds when you need deterministic repeat monitoring of known bridges.
Condition filter tips
The actor maps InfoBridge condition codes to human-readable labels.
Gmeans Good.Fmeans Fair.Pmeans Poor.
Use bridgeCondition when you only need one condition class.
Owner filter tips
ownerContains is a case-insensitive substring filter.
Examples include County Highway Agency, State Highway Agency, or Army.
The filter is applied after a bridge record is fetched.
Integrations
Use the actor with Apify datasets, webhooks, schedules, and API clients.
Common workflows include:
- Scheduled bridge-condition monitoring.
- GIS layer enrichment.
- Infrastructure sales lead lists by owner agency.
- Insurance risk screening by bridge age and condition.
- Data warehouse imports for public-sector analytics.
API usage: Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/fhwa-national-bridge-inventory-scraper').call({stateCodes: [1],maxItems: 100});console.log(run.defaultDatasetId);
API usage: Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/fhwa-national-bridge-inventory-scraper').call({'stateCodes': [1],'maxItems': 100,})print(run['defaultDatasetId'])
API usage: cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~fhwa-national-bridge-inventory-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"stateCodes":[1],"maxItems":100}'
MCP usage
Connect through Apify MCP to use this actor from AI tools such as Claude Desktop, Claude Code, and other MCP-compatible clients.
MCP URL:
https://mcp.apify.com/?tools=automation-lab/fhwa-national-bridge-inventory-scraper
Claude Code setup:
$claude mcp add apify https://mcp.apify.com/?tools=automation-lab/fhwa-national-bridge-inventory-scraper
Claude Desktop JSON configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/fhwa-national-bridge-inventory-scraper"}}}
Example prompts:
- "Get 100 Alabama bridge records from FHWA InfoBridge."
- "Find poor-condition bridge records for state code 1."
- "Export records for these exact InfoBridge bridge IDs."
Performance and politeness
The actor uses conservative HTTP requests.
InfoBridge exposes rate-limit headers, so the actor includes a request delay setting.
Avoid unnecessarily large runs when a small state or exact bridge list will answer your question.
Current limitations
The lightweight public map endpoint does not expose every NBI field.
The MVP focuses on identity, owner, construction, span, condition, and detail links.
County-level filtering is not included in the current output because it would require a heavier endpoint workflow.
FAQ
Why did my run return no results?
Check that the state code is valid and maxItems is greater than zero.
If you pass exact bridge IDs, confirm they are InfoBridge NEW_BRIDGE_ID values.
Why is my run slow?
Lower maxItems or use exact bridgeIds.
You can also reduce requestDelayMs, but keep it polite for FHWA public infrastructure.
Can it scrape county-level bridge fields?
Not in this first version. The lightweight public map endpoint does not expose county fields, so this actor prioritizes reliable state and exact-ID extraction.
Legality
This actor collects data from a public US government information system.
Use the results responsibly and follow Apify terms and applicable laws.
Do not overload the source website.
Related scrapers
Explore other public-data and government-data actors from Automation Lab:
Changelog
- Initial version: state and exact-ID bridge extraction from FHWA InfoBridge public endpoints.
Support
If you need additional fields such as county, route, or historical condition rows, open an issue on the actor page.
Notes for analysts
The actor includes both detailUrl and sourceUrl to make records auditable.
Use those fields when joining outputs with internal GIS or asset-management systems.