API reference

List cells in an area

Find cells within a geographic bounding box.

Community coverage

Results include matching cells in our community-contributed dataset. Sparse or empty results do not mean an area has no mobile service. See Coverage and missing cells.

Getting the list of cells in a specified area

GET https://opencellid.org/cell/getInArea

Parameters

NameTypeRequiredDescription
keystringYesAPI key assigned to the user
BBOXstringYesBounding box as latmin,lonmin,latmax,lonmax (latitude, longitude order).
mccintegerNoMobile country code; If you want to restrict the result to a specific country
mncintegerNoMobile network code or system identifier; If you want to restrict the result
lacintegerNoLocal area code, tracking area code or network id; If you want to restrict the result
radiostringNoYou can specifiy GSM, UMTS, LTE, NR, NBIOT or CDMA as the radio of returned cells. Otherwise cells with any radios will be returned.
limitintegerNoA number defining maximum size of the returned list. Default and maximum value is 50. Use together with offset for paginating through large result sets.
offsetintegerNoThe number of items to skip before beginning to return results. Default is 0. Use together with limit for pagination (e.g., for page 2 with 20 items per page, use offset=20). Note: Since the database is updated minutely, the order of cells may change between API calls. For more consistent results when paginating through large datasets, consider using smaller bounding boxes when the getInAreaSize endpoint indicates a large number of cells.
formatstringNoYou can specify kml, xml, csv or json as output. Default is kml. In csv type of output, there is a first line defining the content of the list.

Example request

Replace YOUR_API_KEY with your key.

curl "https://opencellid.org/cell/getInArea?key=YOUR_API_KEY&BBOX=52.0,21.0,52.5,21.5&format=json"

Use Count cells in an area to get the total count.

Response

Successful requests return HTTP 200. See Errors for error statuses and response formats.

Coordinates are rounded to up to 3 decimal places (2 for MCCs 404–406). Trailing zeros may be omitted. samples uses a positive upstream sample count when available, otherwise 1.

XML

<?xml version="1.0"?>
<rsp stat="ok"><cell lat="39.569" lon="-105.003" mcc="310" mnc="410" lac="7033" cellid="17811" averageSignalStrength="0" range="1898" samples="1" changeable="1" radio="GSM" rnc="0" cid="0" tac="0" sid="0" nid="0" bid="0"/></rsp>

CSV

lat,lon,mcc,mnc,lac,cellid,averageSignalStrength,range,samples,changeable,radio,rnc,cid,tac,sid,nid,bid
39.569,-105.003,310,410,7033,17811,,1898,1,1,GSM,,,,,,

JSON

{
  "count": 1,
  "cells": [
    {
      "lat": 39.569,
      "lon": -105.003,
      "mcc": 310,
      "mnc": 410,
      "lac": 7033,
      "cellid": 17811,
      "averageSignalStrength": 0,
      "range": 1898,
      "samples": 1,
      "changeable": 1,
      "radio": "GSM",
      "rnc": 0,
      "cid": 0,
      "tac": 0,
      "sid": 0,
      "nid": 0,
      "bid": 0
    }
  ]
}

When no cells match, the request still succeeds with HTTP 200. JSON returns {"count":0,"cells":[]}.

Availability

Each user receives 1,000 API request credits per day. For more credits or commercial plans, see Access and limits.


API overview · Measurement fields · Errors

On this page