CartoChrome API
Access health scores for 33,000+ US ZIP codes, 4 million provider profiles, 85,000 facility records, and state-level rankings through a simple REST API.
Base URL
https://api.cartochrome.com/api/v1/All endpoints require trailing slashes. Responses are JSON. Authentication is via API key passed in the X-API-Key header.
Local development: http://localhost:8000/api/v1/
Authentication
Include your API key in every request header:
curl -H "X-API-Key: your_api_key_here" \ https://api.cartochrome.com/api/v1/health-scores/30318/
Free tier requests do not require an API key (limited to 100 calls/day per IP).
Health Scores
/api/v1/health-scores/List all health scores with pagination. Supports filtering by state, city, and score range.
?state=GA&page=1&page_size=20{
"count": 33120,
"next": "/api/v1/health-scores/?page=2",
"previous": null,
"results": [
{
"id": 1,
"zip_code": "30318",
"state": "GA",
"state_name": "Georgia",
"city": "Atlanta",
"latitude": 33.7929,
"longitude": -84.4458,
"healthscore": 72,
"people_score": 68,
"provider_score": 81,
"hospital_score": 74,
"travel_score": 65,
"label": "Excellent Access",
"grade": "B",
"color": "#4dac8a",
"score_type": "Overall Health Score"
}
]
}/api/v1/health-scores/{zip}/Get the overall health score for a specific ZIP code, including sub-scores and metadata.
{
"id": 1,
"zip_code": "30318",
"state": "GA",
"state_name": "Georgia",
"city": "Atlanta",
"latitude": 33.7929,
"longitude": -84.4458,
"healthscore": 72,
"people_score": 68,
"provider_score": 81,
"hospital_score": 74,
"travel_score": 65,
"label": "Excellent Access",
"grade": "B",
"color": "#4dac8a",
"score_type": "Overall Health Score"
}/api/v1/health-scores/{zip}/all-scores/Get all 11 score types (Overall + 10 condition-specific) for a ZIP code.
[
{
"zip_code": "30318",
"healthscore": 72,
"label": "Excellent Access",
"grade": "B",
"score_type": "Overall Health Score"
},
{
"zip_code": "30318",
"healthscore": 65,
"label": "Moderate Access",
"grade": "C+",
"score_type": "Type 1 Diabetes Score"
},
{
"zip_code": "30318",
"healthscore": 58,
"label": "Moderate Access",
"grade": "C",
"score_type": "Alzheimers Score"
}
]/api/v1/health-scores/{zip}/nearby/Get nearby ZIP codes with their health scores, ordered by distance from the target ZIP.
?radius=25&limit=10[
{
"zip_code": "30309",
"city": "Atlanta",
"state": "GA",
"healthscore": 76,
"label": "Excellent Access",
"distance_miles": 2.1
},
{
"zip_code": "30308",
"city": "Atlanta",
"state": "GA",
"healthscore": 69,
"label": "Moderate Access",
"distance_miles": 3.4
}
]/api/v1/health-scores/geojson/GeoJSON FeatureCollection of all ZIP codes with health scores, optimized for map rendering.
?state=GA&min_score=50{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-84.4458, 33.7929]
},
"properties": {
"zip_code": "30318",
"healthscore": 72,
"label": "Excellent Access",
"color": "#4dac8a"
}
}
]
}Providers
/api/v1/providers/Search and list healthcare providers. Supports filtering by specialty, state, city, ZIP, and name.
?specialty=cardiology&state=GA&zip=30318&page=1{
"count": 4012345,
"next": "/api/v1/providers/?page=2",
"previous": null,
"results": [
{
"npi": "1234567890",
"first_name": "Jane",
"last_name": "Smith",
"credential": "MD",
"gender": "F",
"primary_specialty": "Internal Medicine",
"telehealth": true
}
]
}/api/v1/providers/{npi}/Get full profile for a specific provider by NPI number, including education and affiliations.
{
"npi": "1234567890",
"first_name": "Jane",
"last_name": "Smith",
"credential": "MD",
"gender": "F",
"primary_specialty": "Internal Medicine",
"telehealth": true,
"medical_school": "Emory University School of Medicine",
"residency": "Johns Hopkins Hospital",
"graduation_year": 2005,
"facility_names": [
"Grady Memorial Hospital",
"Emory University Hospital"
]
}Facilities
/api/v1/facilities/List healthcare facilities with filtering by type, state, rating, emergency services, and search term.
?type=hospital&state=GA&emergency=true{
"count": 85432,
"next": "/api/v1/facilities/?page=2",
"previous": null,
"results": [
{
"id": 42,
"facility_name": "Grady Memorial Hospital",
"facility_type": "Short Term Acute Care Hospital",
"city_name": "Atlanta",
"state_name": "Georgia",
"state_code": "GA",
"latitude": 33.7547,
"longitude": -84.3963,
"facility_rating": 4,
"emergency_services": true,
"telehealth": true
}
]
}/api/v1/facilities/{id}/Get full details for a specific facility, including bed count, providers, and contact info.
{
"id": 42,
"facility_name": "Grady Memorial Hospital",
"facility_type": "Short Term Acute Care Hospital",
"city_name": "Atlanta",
"state_name": "Georgia",
"state_code": "GA",
"latitude": 33.7547,
"longitude": -84.3963,
"facility_rating": 4,
"emergency_services": true,
"telehealth": true,
"address": "80 Jesse Hill Jr Dr SE",
"phone_number": "(404) 616-1000",
"website": "https://www.gradyhealth.org",
"staffed_beds": 953,
"provider_count": 1247
}Search
/api/v1/autocomplete/Search autocomplete for ZIP codes, cities, providers, and facilities. Returns up to 10 suggestions.
?q=atlanta[
{
"type": "city",
"label": "Atlanta, GA",
"url": "/city/georgia/atlanta/"
},
{
"type": "zip",
"label": "30318 - Atlanta, GA",
"url": "/health-score/30318/"
},
{
"type": "provider",
"label": "Dr. Jane Smith, MD - Internal Medicine",
"url": "/provider/1234567890/jane-smith/"
}
]Rankings
/api/v1/rankings/states/All US states ranked by average health score across their ZIP codes.
[
{
"rank": 1,
"state": "Massachusetts",
"state_code": "MA",
"avg_score": 78,
"label": "Excellent Access",
"grade": "B+",
"color": "#4dac8a",
"zip_count": 547
},
{
"rank": 2,
"state": "Connecticut",
"state_code": "CT",
"avg_score": 76,
"label": "Excellent Access",
"grade": "B",
"color": "#4dac8a",
"zip_count": 391
}
]/api/v1/rankings/hospitals/Top-rated hospitals ranked by CMS quality rating. Filterable by state.
?state=GA[
{
"id": 42,
"rank": 1,
"facility_name": "Emory University Hospital",
"facility_type": "Short Term Acute Care Hospital",
"city_name": "Atlanta",
"state_name": "Georgia",
"state_code": "GA",
"facility_rating": 5,
"emergency_services": true,
"telehealth": true
}
]Transportation Vulnerability Index
/api/v1/tvi/{zip}/Get the Transportation Vulnerability Index for a specific ZIP code, including all five sub-component scores.
{
"zip_code": "30318",
"tvi_score": 62,
"tvi_tier": "HIGH",
"vehicle_score": 58.4,
"transit_score": 72.1,
"facility_distance_score": 45.0,
"population_vulnerability_score": 68.3,
"health_outcome_score": 28.0,
"zero_vehicle_pct": 14.2,
"nearest_hospital_miles": 3.7,
"population": 28450
}/api/v1/tvi/top-vulnerable/ZIP codes ranked by transportation vulnerability. Filterable by state and tier (CRITICAL, HIGH, MODERATE, LOW, MINIMAL).
?state=GA&tier=HIGH&page=1{
"count": 1247,
"next": "/api/v1/tvi/top-vulnerable/?page=2",
"previous": null,
"results": [
{
"zip_code": "30314",
"city": "Atlanta",
"state": "GA",
"tvi_score": 78,
"tvi_tier": "CRITICAL",
"zero_vehicle_pct": 22.1,
"nearest_hospital_miles": 1.2
}
]
}Reference
/api/v1/score-types/List all available health score types and their descriptions.
[
{
"id": 1,
"name": "Overall Health Score",
"description": "Comprehensive healthcare access across all dimensions"
},
{
"id": 2,
"name": "Type 1 Diabetes Score",
"description": "Access to endocrinologists, insulin providers, and diabetes care"
},
{
"id": 3,
"name": "Type 2 Diabetes Score",
"description": "Access to diabetes management, nutrition, and primary care"
}
]/api/v1/states/List all US states with their codes, names, and aggregate health score data.
[
{
"state_code": "GA",
"state_name": "Georgia",
"zip_count": 692,
"avg_healthscore": 58
},
{
"state_code": "MA",
"state_name": "Massachusetts",
"zip_count": 547,
"avg_healthscore": 78
}
]/api/v1/blog/List published blog posts with pagination. Returns title, slug, excerpt, and publication date.
?page=1&page_size=10{
"count": 24,
"next": "/api/v1/blog/?page=2",
"previous": null,
"results": [
{
"id": 1,
"title": "Understanding Healthcare Deserts in Rural America",
"slug": "healthcare-deserts-rural-america",
"excerpt": "Why 60 million Americans live more than 30 minutes from a hospital...",
"published_at": "2026-03-15T12:00:00Z"
}
]
}Rate Limits
Rate limits are enforced per API key (or per IP for unauthenticated requests). Exceeding the limit returns a 429 Too Many Requests response.
Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.
Error Responses
| Code | Description |
|---|---|
| 400 | Bad request -- invalid parameters or missing required fields |
| 401 | Unauthorized -- missing or invalid API key |
| 404 | Not found -- the requested resource does not exist |
| 429 | Too many requests -- rate limit exceeded |
| 500 | Internal server error -- please retry or contact support |
{
"error": "not_found",
"message": "No health score data found for ZIP code 99999.",
"status": 404
}Pricing
Start free. Scale as you grow. No credit card required for the free tier.
Free
- ✓Health scores by ZIP code
- ✓Basic provider lookup
- ✓State rankings
- ✓Community support
Starter
- ✓Everything in Free
- ✓All 11 score types per ZIP
- ✓GeoJSON endpoint
- ✓Facility data access
- ✓Email support
Growth
- ✓Everything in Starter
- ✓Provider search & profiles
- ✓Bulk score exports
- ✓Embeddable widget (1 domain)
- ✓Priority support
- ✓99.9% SLA
Enterprise
- ✓Everything in Growth
- ✓Unlimited widget domains
- ✓Raw data exports
- ✓Custom endpoints
- ✓Dedicated support
- ✓Custom SLA
Code Examples
JavaScript / TypeScript
Use the built-in fetch API. Works in Node.js 18+, Deno, Bun, and all modern browsers.const API_BASE = "https://api.cartochrome.com/api/v1";
const API_KEY = process.env.CARTOCHROME_API_KEY;
const res = await fetch(
`${API_BASE}/health-scores/30318/`,
{
headers: { "X-API-Key": API_KEY },
}
);
const data = await res.json();
console.log(data.healthscore, data.label);
// => 72 "Excellent Access"Python
Use the requests library (pip install requests). Works with any Python 3.8+ environment.import os, requests
API_BASE = "https://api.cartochrome.com/api/v1"
API_KEY = os.environ["CARTOCHROME_API_KEY"]
resp = requests.get(
f"{API_BASE}/health-scores/30318/",
headers={"X-API-Key": API_KEY},
)
data = resp.json()
print(data["healthscore"], data["label"])
# => 72 "Excellent Access"cURL
No installation required. Works on macOS, Linux, and Windows.curl -s -H "X-API-Key: YOUR_API_KEY" \ "https://api.cartochrome.com/api/v1/health-scores/30318/" \ | python3 -m json.tool
Embeddable Widget
Embed a CartoChrome health score widget on your website. Available in 3 sizes (compact, standard, full) with light and dark themes.
<div data-cartochrome-widget
data-zip="30318"
data-size="standard"
data-theme="dark">
</div>
<script src="https://www.cartochrome.com/widget/v1/health-score.js" async></script>Try the Widget Builder →Ready to get started?
Get your free API key and start querying health scores for every US ZIP code in minutes.
Get API Key