API
Authenticate with a secret key from the dashboard. Send it as Authorization: Bearer sk_live_… or X-API-Key. Free plans include 1,000 successful calls per UTC month.
Base URL
https://speckinsights.com
GET /api/v1/geo
IP address to location and postal code. Omit ip to look up the caller.
curl "https://speckinsights.com/api/v1/geo?ip=8.8.8.8" \ -H "Authorization: Bearer sk_live_YOUR_KEY"
Returns city, region, country, ZIP/postal code, coordinates, timezone, and ISP.
GET /api/v1/zip
Demographics for a 5-digit U.S. ZIP code.
curl "https://speckinsights.com/api/v1/zip?zip=10001" \ -H "X-API-Key: sk_live_YOUR_KEY"
Requires a 5-digit ZIP. Some PO-box and unique ZIPs have no demographics row.
GET /api/v1/demographics
The full pipeline: IP → geolocation/ZIP → demographics.
curl "https://speckinsights.com/api/v1/demographics?ip=8.8.8.8" \ -H "Authorization: Bearer sk_live_YOUR_KEY"
Non-U.S. IPs still return geo. demographics is null and notes explains why (no ZIP, non-U.S., or no match for that ZIP).
Errors
401 missing/invalid key · 400 private or malformed IP · 404 no demographics for that ZIP · 429 quota · 503 demographics temporarily unavailable.
Caching
Geolocation is stored for 7 days. Demographics payloads are stored for 30 days keyed by ZIP. Cached hits still count against quota.