Public API

Free, read-only, no API key. Use it to cite, chart, or embed CarnivoreCount's numbers.

All endpoints are public JSON (or CSV, on request) with no authentication. They're rate-limited per IP to keep the service fast for everyone - if you're building something that needs a higher volume of requests, reach out via the link in the footer.

A note on the data: every count here comes from a self-reported, opt-in signup - it is not a census. Treat it as a directional signal of the carnivore diet's growth, not a scientifically sampled population statistic.

This API is free - no key, no billing, no catch. If you use it in an article, app, or research, a mention or a backlink to carnivorecount.com is appreciated - it helps other carnivores find us.

GET/api/trends/

Daily carnivore counts over time - global, for a single country, or broken down by region within a country.

ParamValuesDefaultNotes
levelglobal / country / regionglobalcountry is required for country and region levels.
countryISO 3166-1 alpha-2, e.g. US-Required when level is country or region.
range30d / 90d / allallClamped to the earliest date data actually exists.
topinteger8level=region only - how many regions to break out before folding the rest into "Other".
formatjson / csvjsoncsv returns a long-format date,series_key,series_label,count file.

Example: global trend, last 90 days

GET /api/trends/?range=90d
{
  "success": true,
  "level": "global",
  "range": "90d",
  "start_date": "2026-04-17",
  "end_date": "2026-07-16",
  "series": [
    { "key": "global", "label": "Global", "data": [{ "date": "2026-04-17", "count": 812 }, ...] }
  ],
  "growth": { "absolute": 96, "percent": 13.4 }
}

Example: CSV export for a country

GET /api/trends/?level=country&country=US&format=csv

GET/api/regions/

States/provinces available for a country - powers the cascading dropdowns on signup, but also useful if you just want the list.

ParamValuesNotes
countryISO 3166-1 alpha-2Required. Unknown/blank codes return an empty list, not an error.
GET /api/regions/?country=US
{
  "success": true,
  "country": "US",
  "regions": [{ "code": "US-CA", "name": "California" }, ...]
}

Rate limits

60 requests/minute per IP on both endpoints above. Exceeding it returns HTTP 429 with {"success": false, "message": "..."}.