CrowdCount API

for
api.crowdcount.tech

Integrate CrowdCount data into your own application using these public API endpoints.

How It Works

CrowdCount uses a
location-based
architecture. Each
location
has a unique ID and contains one or more
devices
(Crowd Counters). Counts, entries, and history are all tracked at the location level.


To authenticate, provide
credentials
for
all
devices that belong to the location.


CrowdCount tracks two types of data:

Population
— how many people are currently present (goes up and down)

Entries
— how many people have entered (cumulative, only goes up)

General

CommandDescriptionParameters
GET /pingReturns "pong", indicating that the server is running.
  • None
GET /totalcountReturns the total count of people ever detected across all devices.
  • None
GET /total_entriesReturns the total entries ever recorded across all devices.
  • None
GET /check_userChecks if a device exists and returns its online/offline status.
  • device_id (required)
GET /connection_statusReturns the connection status of a device.
  • device_id (required)
GET /get_all_map_locationsReturns all public map locations with current counts, overcrowding limits, devices, and comparison data.
No authentication required.
  • None
GET /get_all_location_namesReturns a list of names of all public map locations.
  • None

Location Lookup

Find the location ID for a device. Use this to get the location_id needed for all history endpoints.

CommandDescriptionParameters
POST /get_locations_for_deviceReturns all locations that a device belongs to, including each location's location_id, name, current count, overcrowding limit, and member devices.
  • device_id
  • password
POST /get_locationReturns details for a single location by ID.
  • location_id
  • credentials

Location History

Retrieve historical population and entry data for a location. All endpoints require location_id plus credentials for all member devices.
Each endpoint also has an average variant that returns the historical average for the same period.

CommandDescriptionParameters
POST /get_location_day_dataHourly population data for a specific day.
  • location_id
  • credentials
  • date
POST /get_location_average_day_dataAverage hourly population for the same weekday.
Calculated from historical data on matching weekdays.
  • location_id
  • credentials
  • date
POST /get_location_week_dataDaily population data for a specific week.
Input any day of the week to get Monday through Sunday. Supports timezone correction via tz_offset_minutes.
  • location_id
  • credentials
  • date
  • tz_offset_minutes (optional)
POST /get_location_average_week_dataAverage daily population for a week.
Supports timezone correction via tz_offset_minutes.
  • location_id
  • credentials
  • date
  • tz_offset_minutes (optional)
POST /get_location_month_dataDaily population data for a specific month.
  • location_id
  • credentials
  • date
POST /get_location_average_month_dataAverage daily population for a month.
  • location_id
  • credentials
  • date
POST /get_location_year_dataMonthly population data for a specific year.
  • location_id
  • credentials
  • year
POST /get_location_average_year_dataAverage monthly population for a year.
  • location_id
  • credentials
  • year
POST /get_location_entry_day_dataHourly entry data for a specific day.
  • location_id
  • credentials
  • date
POST /get_location_average_entry_day_dataAverage hourly entry data for the same weekday.
  • location_id
  • credentials
  • date
POST /get_location_entry_week_dataDaily entry data for a specific week.
Supports timezone correction via tz_offset_minutes.
  • location_id
  • credentials
  • date
  • tz_offset_minutes (optional)
POST /get_location_average_entry_week_dataAverage daily entry data for a week.
Supports timezone correction via tz_offset_minutes.
  • location_id
  • credentials
  • date
  • tz_offset_minutes (optional)
POST /get_location_entry_month_dataDaily entry data for a specific month.
  • location_id
  • credentials
  • date
POST /get_location_average_entry_month_dataAverage daily entry data for a month.
  • location_id
  • credentials
  • date
POST /get_location_entry_year_dataMonthly entry data for a specific year.
  • location_id
  • credentials
  • year
POST /get_location_average_entry_year_dataAverage monthly entry data for a year.
  • location_id
  • credentials
  • year
POST /get_location_day_data_detailed15-minute interval data for a specific day, with averages.
Returns data in local time using tz_offset_minutes. Useful for detailed CSV exports. Keys are time labels like "0:00", "0:15", ..., "23:45" (96 intervals). Response includes both data and average dicts.
  • location_id
  • credentials
  • date (local date)
  • tz_offset_minutes
  • data_type ("count" or "entries")
POST /get_location_insights_bundleReturns all chart data (day, week, year) for both population and entries in a single response.
Replaces up to 16 individual API calls. Includes averages, entry data, and optional second-day data for timezone spanning. Supports timezone-aware week data via tz_offset_minutes.
  • location_id
  • credentials
  • date
  • date2 (optional)
  • week_date
  • year
  • tz_offset_minutes (optional)
POST /get_location_history_bundleReturns chart data (day, week, year) for a single data type in one response.
Replaces up to 8 individual API calls. Use data_type to choose population or entries.
  • location_id
  • credentials
  • date
  • date2 (optional)
  • week_date
  • year
  • data_type ("count" or "entries")
  • tz_offset_minutes (optional)
GET /export_csvExports population CSV data for a device.
If no date is provided, all data is exported as a zip file.
  • device_id (required)
  • password (required)
  • date (optional)
GET /export_entry_csvExports entry CSV data for a device.
If no date is provided, all data is exported as a zip file.
  • device_id (required)
  • password (required)
  • date (optional)

Important Notes


The
credentials
parameter is a JSON array of {"device_id", "password"} objects for all devices in the location:

"credentials": [{"device_id": "T1234", "password": "password"}, {"device_id": "T5678", "password": "password"}]

For locations with a single device, the array will have one entry.


All parameters listed as
required
in history endpoints above. The date format is
yyyy-mm-dd
. For year-based endpoints use a 4-digit year like
2026
.


Server stores data in
UTC
. For hourly day data, convert to your local timezone in your application. For
week endpoints
, you can pass tz_offset_minutes to get timezone-corrected daily totals directly from the server. The value is your UTC offset in minutes, positive east — e.g. -420 for US Mountain (UTC-7), 60 for CET (UTC+1). In JavaScript: new Date().getTimezoneOffset() * -1.


The
bundle endpoints
return all chart data in a single request (day, week, year, averages). Use these to minimize API calls. The date2 parameter handles timezone day-boundary spanning for hourly data — pass the adjacent UTC date that overlaps your local day.


The
detailed day data
endpoint returns 15-minute interval data (96 data points per day) already shifted to your local timezone. Pass your local date and tz_offset_minutes — the server handles the UTC conversion.


The API endpoint is api.crowdcount.tech


Check our server status at crowdcount.tech/status


© 2026 CrowdCount LLC. All rights reserved. | Privacy Policy | Terms of Use