By the geoamcan data team · Reviewed 2026-10-26
Choose an industry definition
Use NAICS consistently and retain the classification vintage. County Business Patterns counts establishments, not unique corporate owners. A multi-site company may have several establishments.
Make comparable market estimates
Compare the same industry, geography level and period. Use nonemployer data separately to understand businesses without paid employees. Do not add overlapping NAICS parent and child categories.
Separate market evidence from forecasts
Business counts can size a potential market, but do not measure purchase intent or your attainable revenue. Use /v1/search/areas for supported rankings and /v1/markets/compare for comparable market context.
Start with a verified dataset request
Install the Python requests package in your application environment, then set GEOAMCAN_API_KEY on the server. This bounded example demonstrates retrieval; the sections above describe how to extend the workflow.
import os
import requests
response = requests.get(
'https://api.geoamcan.com/v1/business-density',
params={'limit': 1, 'dataset': 'cbp', 'geo_type': 'county', 'geoid': '01001', 'metrics': 'ap,emp,est,n<5,qp1,n5_9'},
headers={"Authorization": "Bearer " + os.environ["GEOAMCAN_API_KEY"]},
timeout=30,
)
response.raise_for_status()
result = response.json()
print(result)curl --fail --get "https://api.geoamcan.com/v1/business-density?limit=1&dataset=cbp&geo_type=county&geoid=01001&metrics=ap%2Cemp%2Cest%2Cn%3C5%2Cqp1%2Cn5_9" \
-H "Authorization: Bearer $GEOAMCAN_API_KEY"Saved response excerpt
{
"source_attribution": {},
"requested_area": {
"geographic_resolution": "county",
"geoid": "01001"
},
"data": [
{
"dataset": "cbp",
"source": "Census Bureau",
"release": "2023",
"geographic_resolution": "county",
"geoid": "01001",
"geography_vintage": "2023",
"period": "2023",
"naics": "",
"component": "totals",
"metrics": {
"ap": 527009,
"emp": 12749,
"est": 968,
"n<5": 471,
"qp1": 125014,
"n5_9": 210,
"establishments_per_1000_residents": 15.999471091864732
},
"margins_of_error": {},
"flags": {
"ap_nf": "G",
"n1000": "not_available",
"emp_nf": "G",
"qp1_nf": "G",
"n1000_1": "not_available",
"n1000_2": "not_available",
"n1000_3": "not_available",
"n1000_4": "not_available",
"n500_999": "not_available",
"establishments_per_1000_residents": "Derived using same-year population estimate; population release Vintage 2025"
}
}
],
"availability": {
"cbp": "available"
},
"next_offset": 1,
"returned_count": 1,
"complete": false,
"snapshot": {
"cbp": {
"release_id": 3,
"release": "2023",
"fingerprint": "7d8dd9e540314ab0ac8c6324966a8a82"
},
"population": {
"release_id": 4,
"release": "Vintage 2025",
"fingerprint": "a5c417070688ce1c6f89436a68a05b23"
}
},
"metric_definitions": {
"cbp": {
"est": {
"label": "Establishments",
"unit": "establishments",
"universe": null,
"source_definition": {}
},
"emp": {
"label": "Employees",
"unit": "persons",
"universe": null,
"source_definition": {}
},
"qp1": {
"label": "First quarter payroll",
"unit": "thousands of USD",
"universe": null,
"source_definition": {}
},
"ap": {
"label": "Annual payroll",
"unit": "thousands of USD",
"universe": null,
"source_definition": {}
}
}
},
"coverage_limitations": {
"cbp": [],
"population": []
},
"native_area_contexts": {},
"commuting_flows": []
}Captured 2026-10-26. Excerpt omits pagination credentials and may shorten nested records. Download verified source responses.
Production checklist
- Keep the bearer key out of browser code and logs.
- Preserve source, release, period, geographic vintage and units.
- Handle 401, 422, 429 and temporary server failures explicitly; respect Retry-After.
- Validate coverage and empty results before generating conclusions.
- Use documented pagination and checkpoint contracts for larger workloads.