Population Density Data
Gain actionable insights with predictive population density estimations tailored to your specific area and timeframe.
It is running in our lab for development purpose and doesn't provide real data.
Introduction
The CAMARA Population Density Data provides population density estimations for a specific area at the current or a future period of time. The estimation considers historical anonymised information of the network connected devices in the requested area.
Limitations
The Playground implementation will return data for all time frames and for all geographical zones with the following limitations:
- the area in the request must not be too big: (max longitude - min longitude) and (max latitude - min latitude) must be smaller than 0.1
- A maximum of 1000 data chunks is retrieved for one API Call (by chunk we mean a 30 minutes estimation on a geohash zone).
- only the synchronized response mechanism is implemented
API Authentication
HTTPS requests to the REST API are protected with 2-Legged OAuth. To learn more about how Orange Developer handles authentication, please refer to our documentation.
In short, you will use your Orange Developer Authorization header as authorization_header for the Basic authentication with Orange Developer.
You get the Authorization header credentials when you register your application on the Orange Developer Console.
curl -X POST \
-H "Authorization: {{ authorization_header }}" \
-d "grant_type=client_credentials" \
https://api.orange.com/openidconnect/playground/v1.0/token
In response, you will get an access_token.
{
"token_type": "Bearer",
"access_token": "66AeYJF8eJQ...2SjkFg9LB1LePC",
"expires_in": 3600
}
API Description
Summary of resources
This API has one resource retrieve. In the response, the Population Density Data are provided by period of time (split of 30 minutes) and by geohash.
A geohash is a system for encoding geographic coordinates (latitude and longitude) into a compact string of letters and digits. It divides the world into a grid and represents each cell in the grid with a unique alphanumeric code. The precision of a geohash increases with its length; longer geohashes correspond to smaller geographic areas. In this implementation we use precision of 7 meaning that the length of the geohash will be 7 characters.
Summary of methods and URL
| Use case of operation | URL method |
|---|---|
| I want to retrieve population density estimation for a given time zone and a given area | POST "https://api.orange.com/camara/playground/api/population-density-data/v0.2/retrieve" |
Population Density Data - Retrieve
Summary of request body parameters
| Attribute Name | Description & comment |
|---|---|
area | See below |
startTime | Start date time. It must follow RFC 3339 and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) |
endTime | End date time. It must follow RFC 3339 and must have time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ (i.e. which allows 2023-07-03T14:27:08.312+02:00 or 2023-07-03T12:27:08.312Z) |
precision | Precision required of response cells. Precision defines a geohash level and corresponds to the length of the geohash for each cell. Precision level 7 is used. |
sink | The url address where the population density data response shall be delivered, using the HTTP protocol. not managed |
sinkcredential | A sink credential provides authentication or authorization information necessary to enable delivery of events to a target. not managed |
Note: data type & cardinality are available in the API reference
For the area, we expect in the request a polygon.
Following information must be provided:
areaTypevalued to POLYGON (mandatory)- a point list with a minimum of 3, maximum of 15, featuring a
latitudeand alongitude
Example of body request
{
"area": {
"areaType": "POLYGON",
"boundary": [
{
"latitude": 41.351099,
"longitude": 2.129661
},
{
"latitude": 41.353928,
"longitude": 2.136373
},
{
"latitude": 41.354663,
"longitude": 2.135839
},
{
"latitude": 41.351921,
"longitude": 2.128704
}
]
},
"startTime": "2025-03-04T11:00:00.000Z",
"endTime": "2025-03-04T11:39:59.000Z",
"precision": 7
}
Summary of response parameters
The response from the Population Density Data API contains population density values represented in time intervals for different cells of the requested area. Each element in the timedPopulationDensityData array corresponds to a time interval, containing population density data for the grid cells.
| Attribute Name | Description |
|---|---|
timedPopulationDensityData | An array of time ranges along with the population density data for the cells within it. The request startDate or endDate must be fully covered by the intervals. |
status | Represents the state of the response for the input polygon defined in the request. Possible values include: SUPPORTED_AREA, PART_OF_AREA_NOT_SUPPORTED, AREA_NOT_SUPPORTED. |
startTime | The interval start time, following RFC 3339 and must have a time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ. |
endTime | The interval end time, also following RFC 3339 and must have a time zone. Recommended format is yyyy-MM-dd'T'HH:mm:ss.SSSZ. |
cellPopulationDensityData | An array containing population density data for the different cells in a specific time range. |
geohash | Coordinates of the cell represented as a string using the Geohash system. The value length, and thus, the cell granularity, is determined by the request body property precision (7 in our case) |
populationDensityData | An object that contains the estimated population density and an estimation range in a cell for a specific time interval. |
dataType | Indicates the type of data returned, which can be NO_DATA, LOW_DENSITY, or DENSITY_ESTIMATION. |
maxPplDensity | Maximum people/km² estimated for the defined area. |
minPplDensity | Minimum people/km² estimated for the defined area. |
pplDensity | The estimated population density in people/km² for the defined area. |
Notes
- The response may include multiple intervals depending on the requested time range.
Response
200 Match successful
Content-Type: application/json
{
"timedPopulationDensityData": [
{
"startTime": "2025-05-07T14:00:00Z",
"endTime": "2025-05-07T14:30:00Z",
"cellPopulationDensityData": [
{
"dataType": "DENSITY_ESTIMATION",
"geohash": "u09tun9",
"maxPplDensity": 120825,
"minPplDensity": 56213,
"pplDensity": 63647
},
{
"dataType": "DENSITY_ESTIMATION",
"geohash": "u09tunc",
"maxPplDensity": 134575,
"minPplDensity": 70874,
"pplDensity": 79007
},
{...}
]
},
{
"startTime": "2025-05-07T14:30:00Z",
"endTime": "2025-05-07T15:00:00Z",
"cellPopulationDensityData": [
{
"dataType": "DENSITY_ESTIMATION",
"geohash": "u09tun9",
"maxPplDensity": 115611,
"minPplDensity": 50062,
"pplDensity": 62496
},
{
"dataType": "DENSITY_ESTIMATION",
"geohash": "u09tunc",
"maxPplDensity": 129097,
"minPplDensity": 56154,
"pplDensity": 78297
},
{...}
]
}
],
"status": "SUPPORTED_AREA"
}
Most frequent errors
- Maximum time period query-able is 7 days - if the requested period exceed an error 400 is send back with code
POPULATION_DENSITY_DATA.MAX_TIME_PERIOD_EXCEEDED - Only precision 7 is managed - if another value is provided an error 422 is send back with code
POPULATION_DENSITY_DATA.UNSUPPORTED_PRECISION - If the end date is earlier than the start date an error 400 is send back with code
POPULATION_DENSITY_DATA.INVALID_END_DATE - If the end date or the start date is missing an error 400 is send back with code
POPULATION_DENSITY_DATA.INVALID_ENDTIMEorPOPULATION_DENSITY_DATA.INVALID_STARTTIME