By the geoamcan data team · Reviewed 2026-10-26
Define a defensible area
Use /v1/geo/analyze with a supported published boundary or validated custom geometry. Start with a small service area and a short metric list. This analysis is currently US-only.
Understand allocation
Counts for custom areas may be geographically allocated from source units. The output reports its method and coverage. An allocated estimate is not a direct survey of the exact polygon, and overlapping service areas cannot be summed without double counting.
Treat medians differently
A median cannot be added or averaged like a count. Supported median calculations depend on distributions and approved aggregation methods. Preserve unavailable and insufficient-data results rather than filling them with zero.
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/demographics',
params={'limit': 1, 'dataset': 'acs-extended', 'geo_type': 'cbsa', 'geoid': '10100', 'metrics': 'B01001_001,B01001_002,B01001_003,B01001_004,B01001_005,B01001_006'},
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/demographics?limit=1&dataset=acs-extended&geo_type=cbsa&geoid=10100&metrics=B01001_001%2CB01001_002%2CB01001_003%2CB01001_004%2CB01001_005%2CB01001_006" \
-H "Authorization: Bearer $GEOAMCAN_API_KEY"Saved response excerpt
{
"source_attribution": {},
"requested_area": {
"geographic_resolution": "cbsa",
"geoid": "10100"
},
"data": [
{
"dataset": "acs-extended",
"source": "Census Bureau",
"release": "2024",
"geographic_resolution": "cbsa",
"geoid": "10100",
"geography_vintage": "2024",
"period": "2024",
"naics": "",
"component": "B01001",
"metrics": {
"B01001_001": 41925,
"B01001_002": 20842,
"B01001_003": 1154,
"B01001_004": 1381,
"B01001_005": 1593,
"B01001_006": 844
},
"margins_of_error": {
"B01001_001": null,
"B01001_002": 220,
"B01001_003": 114,
"B01001_004": 215,
"B01001_005": 243,
"B01001_006": 70
},
"flags": {
"native_geo_id": "310M700US10100",
"survey_window": "2020-2024",
"B01001_001_moe": "source_annotation:-555555555",
"source_geographic_variant": "M7"
}
}
],
"availability": {
"acs-extended": "available"
},
"next_offset": 1,
"returned_count": 1,
"complete": false,
"snapshot": {
"acs-extended": {
"release_id": 32,
"release": "2024",
"fingerprint": "9a1bb6e057a0e0c2e6de41b10636e129"
}
},
"metric_definitions": {
"acs-extended": {
"B01001_006": {
"label": "15 to 17 years",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "6.0",
"Type": "int",
"Label": "15 to 17 years",
"Title": "Sex by Age",
"Indent": "2",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_006"
}
},
"B01001_005": {
"label": "10 to 14 years",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "5.0",
"Type": "int",
"Label": "10 to 14 years",
"Title": "Sex by Age",
"Indent": "2",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_005"
}
},
"B01001_004": {
"label": "5 to 9 years",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "4.0",
"Type": "int",
"Label": "5 to 9 years",
"Title": "Sex by Age",
"Indent": "2",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_004"
}
},
"B01001_003": {
"label": "Under 5 years",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "3.0",
"Type": "int",
"Label": "Under 5 years",
"Title": "Sex by Age",
"Indent": "2",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_003"
}
},
"B01001_002": {
"label": "Male:",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "2.0",
"Type": "int",
"Label": "Male:",
"Title": "Sex by Age",
"Indent": "1",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_002"
}
},
"B01001_001": {
"label": "Total:",
"unit": "count; see source universe",
"universe": "Total population",
"source_definition": {
"Line": "1.0",
"Type": "int",
"Label": "Total:",
"Title": "Sex by Age",
"Indent": "0",
"Table ID": "B01001",
"Universe": "Total population",
"Unique ID": "B01001_001"
}
}
}
},
"coverage_limitations": {
"acs-extended": []
},
"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.