Retrieve all places contained within a place
Given a list of parent Place
DCIDs,
(e.g. any State
, Country
, etc.), return a list of child places
contained within the specified DCIDs. Only returns children whose place type matches
the request’s placeType
parameter.
General information about this endpoint
URL: /node/places-in
Methods available: GET
, POST
Required arguments:
-
dcids
: A list of (parent)Place
nodes, identified by their DCIDs. -
placeType
: The type of the contained (child)Place
nodes to filter by.
How to construct a request to the places within a place endpoint
Step 1: assembling the information you will need
This endpoint requires the argument dcids
. DCIDs are unique node identifiers defined by Data Commons. Your query will need to specify the DCIDs for the parent places of interest.
This endpoint also requires the argument placeType
, specifying the type of the child places you desire in the response.
Step 2: creating the request
When actually putting together your request, you can choose from two options. If you intend to query only a small number of DCIDs, you may want to use the simpler formatting offered by the GET method. For larger numbers of DCIDs, or if you prefer to utilize a static URL, a POST request likely makes more sense. To use it, make a POST request against the main endpoint while changing the fields of the JSON body it sends.
Examples of usage for both GET and POST can be found below.
What to expect in the response
Your response will always look like this:
{
"payload": "<payload string>",
}
Here "<payload string>"
is a long encoded JSON string, whose structure changes depending on whether the response contains node references. You can run JSON.parse()
on the payload
field to retrieve the data. For example, in JavaScript: var data = JSON.parse(response['payload'])
.
After decoding the response payload string, its structure adheres to the following form:
[
{
"dcid": "stringOfParentPlaceDCID",
"place": "stringOfChildPlaceDCID"
},
...
]
Example requests and responses
Example 1: Retrieve a list of the counties in Delaware.
-
curl --request GET \ --url 'https://api.datacommons.org/node/places-in?dcids=geoId%2F10&placeType=County'
-
curl --request POST \ --url https://api.datacommons.org/node/places-in \ --header 'content-type: application/json' \ --data '{ "dcids": [ "geoId/10" ], "placeType": "County" }'
Response
{
"payload": [
{
"dcid": "geoId/10",
"place": "geoId/10001"
},
{
"dcid": "geoId/10",
"place": "geoId/10003"
},
{
"dcid": "geoId/10",
"place": "geoId/10005"
}
]
}
Example 2: Retrieve a list of congressional districts in Alaska and Hawaii.
-
curl --request GET \ --url 'https://api.datacommons.org/node/places-in?dcids=geoId%2F15&dcids=geoId%2F02&placeType=CongressionalDistrict'
-
curl --request POST \ --url https://api.datacommons.org/node/places-in \ --header 'content-type: application/json' \ --data '{ "dcids": [ "geoId/15", "geoId/02" ], "placeType": "CongressionalDistrict" }'
Response
{
"payload": [
{
"dcid": "geoId/15",
"place": "geoId/1501"
},
{
"dcid": "geoId/15",
"place": "geoId/1502"
},
{
"dcid": "geoId/02",
"place": "geoId/0200"
}
]
}
Error Responses
If your request is malformed in some way, you will receive a 400 status code and an error message like the following:
{
"code": 3,
"message": "Missing required arguments",
"details": [
{
"@type": "type.googleapis.com/google.rpc.DebugInfo",
"stackEntries": [],
"detail": "internal"
}
]
}