Discover/USDA API
live

USDA APIdata.ers.usda.gov

Access county-level unemployment, income, poverty, demographics, and rural classifications for all 3,143 US counties via the USDA ERS Rural Atlas API.

Endpoint health
verified 13h ago
get_county_demographics
list_available_layers
query_layer
get_county_economic_data
get_county_classifications
5/5 passing latest checkself-healing
Endpoints
5
Updated
22d ago

What is the USDA API?

This API exposes economic, demographic, and classification data for all 3,143 US counties from the USDA Economic Research Service Rural Atlas, spread across 5 endpoints. get_county_economic_data returns unemployment rates for 2007–2021, per capita income, median household income, and poverty rates. get_county_classifications returns rural-urban continuum codes, metro/nonmetro status, and economic dependency types. All endpoints accept FIPS-based filters at the state or county level.

Try it
Maximum number of counties to return. If omitted, returns all matching counties.
2-digit state FIPS code to filter by state (e.g., '01' for Alabama, '06' for California). Leading zeros preserved.
5-digit county FIPS code for a specific county (e.g., '06037' for Los Angeles County). Leading zeros preserved.
api.parse.bot/scraper/c7b74021-b401-4802-835a-401aee92b836/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/c7b74021-b401-4802-835a-401aee92b836/get_county_economic_data?limit=2&state_fips=06&county_fips=06037' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace data-ers-usda-gov-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: USDA ERS County Economic Data API — bounded, re-runnable."""
from parse_apis.usda_ers_county_economic_data_api import UsdaErs, Service, CountyNotFound

client = UsdaErs()

# Construct a county by FIPS and fetch economic data.
la_county = client.county(fips="06037")
econ = la_county.economics(limit=1).first()
if econ:
    print(f"{econ.county}, {econ.state}: unemployment 2021={econ.unemployment.rate_2021}%, "
          f"median income=${econ.income.median_household_income}")

# Fetch demographics for the same county.
demo = la_county.demographics(limit=1).first()
if demo:
    print(f"Population: {demo.population.estimate_2021}, "
          f"College+: {demo.education.college_plus_pct}%")

# Fetch classifications to check metro/rural status.
cls = la_county.classifications(limit=1).first()
if cls:
    print(f"Metro: {cls.metro_2013}, High amenity: {cls.high_amenity}, "
          f"Rural-urban code: {cls.rural_urban_continuum_code_2013}")

# Discover available layers for a service, then query raw data.
people_svc = client.dataservice(name="people")
layer = people_svc.list_layers(limit=3).first()
if layer:
    print(f"Layer {layer.id}: {layer.name} (service={layer.service})")

# Typed error handling: attempt a lookup for a non-existent county.
bogus = client.county(fips="99999")
try:
    result = bogus.economics(limit=1).first()
    print(f"Result: {result}")
except CountyNotFound as exc:
    print(f"County not found: {exc.county_fips}")

print("exercised: county.economics / county.demographics / county.classifications / "
      "dataservice.list_layers / CountyNotFound")
All endpoints · 5 totalmissing one? ·

Get comprehensive economic data for counties including unemployment rates (2007-2021), employment change, employment by industry sector, median household income, per capita income, and poverty rates. Combines Jobs and Income data services. Without filters returns all ~3,143 US counties. Pagination is internal; the response is a single page.

Input
ParamTypeDescription
limitintegerMaximum number of counties to return. If omitted, returns all matching counties.
state_fipsstring2-digit state FIPS code to filter by state (e.g., '01' for Alabama, '06' for California). Leading zeros preserved.
county_fipsstring5-digit county FIPS code for a specific county (e.g., '06037' for Los Angeles County). Leading zeros preserved.
Response
{
  "type": "object",
  "fields": {
    "filter": "object with state_fips and county_fips filter values",
    "counties": "array of county objects with fips, state, county, unemployment (rates 2007-2021), employment_change (percent changes), employment_by_industry (10 sectors), income (median_household_income, per_capita_income), poverty (poverty_rate, child_poverty_rate, deep_poverty_rate, deep_child_poverty_rate)",
    "total_counties": "integer total count of returned counties"
  }
}

About the USDA API

Economic and Income Data

The get_county_economic_data endpoint combines Jobs and Income data layers into a single county-level response. Fields include annual unemployment rates from 2007 through 2021, employment change as a percent, employment breakdowns by industry sector, median household income, per capita income, and poverty rates. Filter by state_fips (2-digit, e.g. '06' for California) or county_fips (5-digit, e.g. '06037' for Los Angeles County). All FIPS codes preserve leading zeros.

Demographics

get_county_demographics returns population estimates, density, and change rates alongside net migration, natural change, and international migration figures. Age distribution, race and ethnicity breakdowns, education attainment levels, household characteristics, and foreign-born population share are all included in the county objects. The same state_fips and county_fips filters apply, and omitting both returns data for all counties.

County Classifications

get_county_classifications surfaces the USDA's official typology codes: rural_urban_continuum_code_2013, urban_influence_code_2013, metro/nonmetro designation, and economic dependency classifications such as farming, manufacturing, mining, government, and recreation. Special designations like low employment, population loss, and retirement destination counties are also included. These codes are widely used in rural policy research.

Layer Discovery and Raw Queries

list_available_layers enumerates all available layers across five services — People, Jobs, Income, County_Classifications, and Veterans — returning each layer's id, name, and default_visibility. The query_layer endpoint lets you pull raw attribute data from any specific layer by passing the service name and an optional layer_id. Response field names vary by layer, so using list_available_layers first is the practical way to know what fields a given layer exposes.

Reliability & maintenanceVerified

The USDA API is a managed, monitored endpoint for data.ers.usda.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when data.ers.usda.gov changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official data.ers.usda.gov API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
13h ago
Latest check
5/5 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Map county-level unemployment trends from 2007 to 2021 to identify regions still recovering from the 2008 recession
  • Filter nonmetro counties by economic dependency type (farming, mining, recreation) for rural development grant targeting
  • Join per capita income and poverty rate fields with census geometries for choropleth mapping
  • Identify retirement-destination counties using classification flags for demographic research
  • Compare net migration and natural population change across states to analyze rural population loss
  • Pull Veterans service layer data alongside income figures to assess economic conditions for veteran populations
  • Build a county comparison tool using FIPS-filtered queries across economic, demographic, and classification endpoints
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does USDA ERS have an official developer API?+
Yes. The USDA Economic Research Service exposes its Rural Atlas data through ArcGIS REST services at https://data.ers.usda.gov/arcgis/rest/services/Atlas. This Parse API organizes those services into structured, filterable endpoints.
How do I retrieve data for a single county using get_county_economic_data?+
Pass the 5-digit county_fips parameter, for example '06037' for Los Angeles County. The response returns a counties array with one object containing unemployment rates, income fields, and employment sector data for that county, plus a total_counties count of 1. You can also pass only state_fips to get all counties within a state.
What time period does the unemployment data cover?+
The get_county_economic_data endpoint returns unemployment rates spanning 2007 through 2021. Data for years before 2007 or after 2021 is not currently available through this endpoint. You can fork this API on Parse and revise it to target a different layer if more recent ERS data layers become available.
Does the API include city-level or census-tract-level data?+
No. All endpoints return data at the county level only, covering the 3,143 US counties and county equivalents identified by FIPS code. Sub-county granularity such as census tracts, ZIP codes, or cities is not currently covered. You can fork this API on Parse and revise it to add endpoints targeting finer geographic units from compatible ArcGIS services.
What does the query_layer endpoint return, and when should I use it instead of the named endpoints?+
Use query_layer when you need data from a specific layer not surfaced by the three named endpoints — particularly Veterans data or any layer with unusual fields. Pass the service name (e.g. veterans) and a layer_id from list_available_layers. The response includes a counties array of raw attribute objects; field names vary by layer and are not normalized across services.
Page content last updated . Spec covers 5 endpoints from data.ers.usda.gov.
Related APIs in Government PublicSee all →
naco.org API
Search and explore detailed U.S. county government information, including profiles, economic indicators, funding data, and research resources all in one place. Quickly access bulk county statistics and NACo insights to support planning, analysis, and decision-making at the local government level.
nassgeodata.gmu.edu API
Access detailed USDA crop data including acreage statistics, satellite imagery, and crop classifications for any location across the United States. Compare agricultural patterns year-over-year, download raster data files, or retrieve specific crop information at the point level to analyze farming trends and land use.
nass.usda.gov API
Access comprehensive agricultural statistics from the USDA, including crop production data, livestock numbers, and farm economics through the QuickStats database, while also discovering available parameters and viewing the publications calendar. Search, filter, and retrieve detailed agricultural data by region, commodity, and time period to support farming decisions and agricultural analysis.
census.gov API
Get detailed property and housing statistics from the US Census Bureau, including home values, rental prices, occupancy rates, and housing unit counts across different geographic regions. Search and retrieve specific housing data tables to analyze real estate trends and demographics for your area of interest.
worlddata.info API
Explore global statistics and compare countries across population, economy, demographics, quality of life, education, and health metrics. Search worldwide data on everything from life expectancy and languages to religions and regional breakdowns to gain comprehensive insights into how nations rank against each other.
data.stats.gov.cn API
Access comprehensive statistical data, economic indicators, and official reports from China's National Bureau of Statistics through simple searches and structured queries. Retrieve detailed articles, data releases, indicator trends, and downloadable documents to analyze China's economic and social statistics.
foodpantries.org API
Find food pantries near you by searching your address, browsing by state, city, or county, and access detailed information about locations and services. Discover newly added pantries and explore comprehensive listings to locate food assistance resources in your area.
usajobs.gov API
Search federal job openings and view detailed job announcements from USAJobs.gov, plus access historical job data and reference codes to help you find the right government position. Filter and explore thousands of federal career opportunities with comprehensive job details all in one place.