ZIP Demographics API
Overview
To use ZIP Demographics, you need an API key. You can get one by creating a free account and visiting your dashboard.
GET Endpoint
https://api.apiverve.com/v1/zipdemographicsExample
How to call the ZIP Demographics API in different programming languages.
curl -X GET \
"https://api.apiverve.com/v1/zipdemographics?zip=90210" \
-H "X-API-Key: your_api_key_here"const response = await fetch('https://api.apiverve.com/v1/zipdemographics?zip=90210', {
method: 'GET',
headers: {
'X-API-Key': 'your_api_key_here',
'Content-Type': 'application/json'
}
});
const data = await response.json();
console.log(data);import requests
headers = {
'X-API-Key': 'your_api_key_here',
'Content-Type': 'application/json'
}
response = requests.get('https://api.apiverve.com/v1/zipdemographics?zip=90210', headers=headers)
data = response.json()
print(data)package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.apiverve.com/v1/zipdemographics?zip=90210", nil)
req.Header.Set("X-API-Key", "your_api_key_here")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}{
"status": "ok",
"error": null,
"data": {
"zip": "90210",
"name": "ZCTA5 90210",
"acsYear": 2022,
"population": {
"total": 21741,
"male": 10234,
"female": 11507,
"medianAge": 45.3
},
"income": {
"medianHousehold": 153891,
"perCapita": 98234
},
"housing": {
"medianHomeValue": 2875000,
"medianRent": 3250,
"totalUnits": 10234,
"homeOwnershipRate": 63.2
},
"education": {
"collegeEducatedPct": 72.4
},
"employment": {
"laborForce": 11234,
"unemploymentRate": 3.8
},
"race": {
"white": {
"count": 16892,
"percent": 77.7
},
"asian": {
"count": 2345,
"percent": 10.8
}
},
"formatted": {
"medianHouseholdIncome": "$153,891",
"perCapitaIncome": "$98,234",
"medianHomeValue": "$2,875,000",
"medianRent": "$3,250"
}
}
}Authentication
The ZIP Demographics API requires authentication via API key. Include your API key in the request header:
X-API-Key: your_api_key_hereInteractive API Playground
Test the ZIP Demographics API directly in your browser with live requests and responses.
Parameters
The following parameters are available for the ZIP Demographics API:
Get ZIP Demographics
| Parameter | Type | Required | Description | Default | Example |
|---|---|---|---|---|---|
zip | string | required | 5-digit US ZIP code Length: 5 - 5 chars | - |
Response
The ZIP Demographics API returns responses in JSON, XML, YAML, and CSV formats. The JSON response is shown in the Example section above; alternative formats below.
Other Response Formats
<?xml version="1.0" encoding="UTF-8"?>
<response>
<status>ok</status>
<error xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<data>
<zip>90210</zip>
<name>ZCTA5 90210</name>
<acsYear>2022</acsYear>
<population>
<total>21741</total>
<male>10234</male>
<female>11507</female>
<medianAge>45.3</medianAge>
</population>
<income>
<medianHousehold>153891</medianHousehold>
<perCapita>98234</perCapita>
</income>
<housing>
<medianHomeValue>2875000</medianHomeValue>
<medianRent>3250</medianRent>
<totalUnits>10234</totalUnits>
<homeOwnershipRate>63.2</homeOwnershipRate>
</housing>
<education>
<collegeEducatedPct>72.4</collegeEducatedPct>
</education>
<employment>
<laborForce>11234</laborForce>
<unemploymentRate>3.8</unemploymentRate>
</employment>
<race>
<white>
<count>16892</count>
<percent>77.7</percent>
</white>
<asian>
<count>2345</count>
<percent>10.8</percent>
</asian>
</race>
<formatted>
<medianHouseholdIncome>$153,891</medianHouseholdIncome>
<perCapitaIncome>$98,234</perCapitaIncome>
<medianHomeValue>$2,875,000</medianHomeValue>
<medianRent>$3,250</medianRent>
</formatted>
</data>
</response>
status: ok
error: null
data:
zip: '90210'
name: ZCTA5 90210
acsYear: 2022
population:
total: 21741
male: 10234
female: 11507
medianAge: 45.3
income:
medianHousehold: 153891
perCapita: 98234
housing:
medianHomeValue: 2875000
medianRent: 3250
totalUnits: 10234
homeOwnershipRate: 63.2
education:
collegeEducatedPct: 72.4
employment:
laborForce: 11234
unemploymentRate: 3.8
race:
white:
count: 16892
percent: 77.7
asian:
count: 2345
percent: 10.8
formatted:
medianHouseholdIncome: $153,891
perCapitaIncome: $98,234
medianHomeValue: $2,875,000
medianRent: $3,250
| key | value |
|---|---|
| zip | 90210 |
| name | ZCTA5 90210 |
| acsYear | 2022 |
| population | {total:21741,male:10234,female:11507,medianAge:45.3} |
| income | {medianHousehold:153891,perCapita:98234} |
| housing | {medianHomeValue:2875000,medianRent:3250,totalUnits:10234,homeOwnershipRate:63.2} |
| education | {collegeEducatedPct:72.4} |
| employment | {laborForce:11234,unemploymentRate:3.8} |
| race | {white:{count:16892,percent:77.7},asian:{count:2345,percent:10.8}} |
| formatted | {medianHouseholdIncome:$153,891,perCapitaIncome:$98,234,medianHomeValue:$2,875,000,medianRent:$3,250} |
Response Structure
All API responses follow a consistent structure with the following fields:
| Field | Type | Description | Example |
|---|---|---|---|
status | string | Indicates whether the request was successful ("ok") or failed ("error") | ok |
error | string | null | Contains error message if status is "error", otherwise null | null |
data | object | null | Contains the API response data if successful, otherwise null | {...} |
Learn more about response formats →
Response Data Fields
When the request is successful, the data object contains the following fields:
| Field | Type | Sample Value | Description |
|---|---|---|---|
zip | string | ZIP Code Tabulation Area identifier | |
name | string | ZCTA descriptive name | |
acsYear | number | American Community Survey year used for data | |
population | object | - | |
â”” total | number | Total population count in ZIP code | |
â”” malePremium | number | Male population count | |
â”” femalePremium | number | Female population count | |
â”” medianAgePremium | number | Median age of population in years | |
income | object | - | |
â”” medianHousehold | number | Median household income in dollars | |
â”” perCapitaPremium | number | Per capita income in dollars | |
housing | object | - | |
â”” medianHomeValuePremium | number | Median home value in dollars | |
â”” medianRentPremium | number | Median rent price in dollars | |
â”” totalUnitsPremium | number | Total housing units in area | |
â”” homeOwnershipRatePremium | number | Percentage of homes owner-occupied | |
education | object | - | |
â”” collegeEducatedPctPremium | number | Percentage with college degree or higher | |
employment | object | - | |
â”” laborForcePremium | number | Total labor force population count |
Headers
Only X-API-Key is required. Optional headers include Accept for response format negotiation (JSON, XML, or YAML), User-Agent, and X-Request-ID for request tracing. See all request headers →
GraphQL AccessALPHA
Access ZIP Demographics through GraphQL to combine it with other API calls in a single request. Query only the zip demographics data you need with precise field selection, and orchestrate complex data fetching workflows.
Credit Cost: Each API called in your GraphQL query consumes its standard credit cost.
POST https://api.apiverve.com/v1/graphqlquery {
zipdemographics(
input: {
zip: "90210"
}
) {
zip
name
acsYear
population {
total
male
female
medianAge
}
income {
medianHousehold
perCapita
}
housing {
medianHomeValue
medianRent
totalUnits
homeOwnershipRate
}
education {
collegeEducatedPct
}
employment {
laborForce
unemploymentRate
}
race {
white {
count
percent
}
asian {
count
percent
}
}
formatted {
medianHouseholdIncome
perCapitaIncome
medianHomeValue
medianRent
}
}
}Note: Authentication is handled via the x-api-key header in your GraphQL request, not as a query parameter.
CORS Support
The ZIP Demographics API accepts cross-origin requests from any origin, so it can be called directly from browser-based applications without a proxy. See CORS support →
Rate Limiting
ZIP Demographics requests are throttled per minute on the Free plan and unthrottled on paid plans. Exceeding the limit returns 429 Too Many Requests; rate-limit usage is reported in the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset response headers. See per-plan limits and best practices →
Error Codes
The ZIP Demographics API uses standard HTTP status codes — 200 on success, 400 for invalid parameters, 401 for missing or invalid keys, 403 for insufficient credits, 429 for rate-limit exhaustion, and 500/503 for server-side issues. Each error response includes an X-Request-ID header you can quote when contacting support. See full error handling guide →
SDKs for ZIP Demographics
Official ZIP Demographics packages on npm, PyPI, NuGet, and JitPack — plus a Postman collection and an OpenAPI spec. See the SDK guide →
No-Code Integrations
ZIP Demographics works with Zapier, Make, Pipedream, n8n, and Power Automate using the same API key. See setup guides →
Frequently Asked Questions
How do I get an API key for ZIP Demographics?
How many credits does ZIP Demographics cost?
Each successful ZIP Demographics API call consumes credits based on plan tier. Check the pricing section above for the exact credit cost. Failed requests and errors don't consume credits, so you only pay for successful zip demographics lookups.
Can I use ZIP Demographics in production?
The free plan is for testing and development only. For production use of ZIP Demographics, upgrade to a paid plan (Starter, Pro, or Mega) which includes commercial use rights, no attribution requirements, and guaranteed uptime SLAs. All paid plans are production-ready.
Can I use ZIP Demographics from a browser?
What happens if I exceed my ZIP Demographics credit limit?
When you reach your monthly credit limit, ZIP Demographics API requests will return an error until you upgrade your plan or wait for the next billing cycle. You'll receive notifications at 80% and 95% usage to give you time to upgrade if needed.








