Documenting the Columns in the downloadable Cells database CSV

I wouldn’t say that. We’re not looking at this from the point of view of a mobile device or cell coverage. The position of the cell itself can be at this coordinate or within x meters (range).

This is an average value from multiple measurements.

So, I am looking at the Burkina Faso data, and the average for “range” is 1.9 km - does that mean that the average error range of the cell tower from the given lat-long in the data is 1.9 km? I see some values as high as 150-200 km, is that right?

I think to avoid confusion this variable should be labeled as error, instead of range. Clearly the British government is interpreting it incorrectly in their OpenCellID code book (should probably correct them, eh?)


Can I get a more precise definition of the the “approximate location” field? Is that the location of the UE that produced the report? Or if not, how is it computed?


Hey Eric,

We do not return the position of the UE (User Equipment) - we approximate position of a cell based on information scanned by the UE. Each submitted scan is known as a measurement. We process billions of measurements to determine positions of millions of cells.

For example, Your current device is able to scan cell A (signal strength 85%) at GPS position of your device (x,y).

  • Device position x1,y1 - Cell A signal strength 95%
  • Device position x2,y2 - Cell A signal strength 73%
  • Device position x3,y3 - Cell A signal strength 68%
  • Device position x4,y4 - Cell A signal strength 81%

You can see how hundreds of such submissions can give us enough data to approximate position of cell A.

Hi Sagar,

Thank you. Is that algorithm documented somewhere? Some fellow researchers (both at NIST and elsewhere) and I are to do some further post-analysis using the OpenCellID data, and it would be very helpful to know exactly what went into it.

For example, is it simple multilateration based on signal strength? Is antenna directionality (at the cell site primarily, but maybe also the receiver) considered? What about transmit power variation over time? And differing receiver sensitivity / calibration? What about colinear / non-orthogonal measurement points? Or non-uniform propagation losses with distance (e.g. some observations are weak because the UE is in a valley, not because the cell is far away)?


Hey Eric,

We use a simple triangulation algorithm. I’m sure it’s available in a number of places online. The challenge is to curate input data - this is where we excel with a bunch of intelligent algorithms that verify the quality of cells we receive in measurements.

Signal strength is only one of the factors and is a part of a standard triangulation algorithm.

We do not receive info on antenna direction, transmit power, receiver calibration. As for uniform propagation losses, we use our existing data on cells to qualify each measurement and flag out cells that were affected because of a simple interference.

I’ll be happy to hop on a quick call and elaborate. Reach out to us at [email protected]

Hi Sagar,

I read this thread and I feel confused about the exact definition of the range. Here is my interpretation: it enables to define a circle area whose radius is expressed in meters by the ‘range’ property which possibly contains the cell tower.

Could you please confirm my assumption?

Thank you very much for your support.


You are right, range is an approximation of where the cell might be.

We have a confidence benchmark of 98% - this means we 98% of times, the actual location of device will be within the circle. In a standard API response; there is a 98% chance that the device is at (x,y) or z meters sq around it.

  • If we were to reduce our confidence benchmark to 50% - it would mean that 50% of the times, actual location of the device will be within a circle. Because my confidence benchmark is low, I can reduce the accuracy to…say 300 meters. So, there is a 50% chance that the device is at (x,y) or 300 meters sq around it.
  • If we were to reduce our confidence benchmark to 10% - it would mean that 10% of the times, actual location of the device will be within a circle. Because my confidence benchmark is low, I can reduce the accuracy to…say 50 meters. So, there is a 10% chance that the device is at (x,y) or 50 meters sq around it.

If we have a higher confidence benchmark, the radius (accuracy value) returned will be larger.

Thank you Sagar for your clear answer; no doubt any more.



I am a researcher at Wharton, University of Pennsylvania and trying to use the cell phone tower location data in opencellID for academic research purposes. I was hoping to get some clarification on the data and will much appreciate any help.

I see that the data has multiple rows corresponding to the same MNO-cellID. For example, see the data below. Can you please help me understand how should I interpret these multiple rows for the same operator-CellID tuple? Which of these is likely to be the most accurate with regards to lattitude-longitude information of the tower?

radio Mobilecountrycode Mobilenetworkcode area cellID unit lon lat range samples changeable created updated averageSignal
GSM 405 51 8086 4112 0 87.28981 23.54727 1000 10 1 1.41E+09 1.49E+09 0
GSM 405 51 6032 4112 0 89.20967 26.34247 1000 2 1 1.44E+09 1.44E+09 0
UMTS 405 51 8190 4112 0 88.57386 23.00332 10070 2 1 1.46E+09 1.48E+09 0
UMTS 405 51 8182 4112 0 87.98195 22.7726 1000 1 1 1.47E+09 1.47E+09 0
UMTS 405 51 9017 4112 0 88.31337 24.29558 1000 3 1 1.48E+09 1.48E+09 0
UMTS 405 51 7080 4112 0 88.12752 23.63777 1000 1 1 1.49E+09 1.49E+09 0
UMTS 405 51 2002 4112 0 87.09068 23.62679 1000 1 1 1.49E+09 1.49E+09 0

Would be a great help if you could kindly throw some light on this.

The OpenCelliD downloadable dataset does not have duplicate cells. Unique cell identifiers consists of four parts: Mobile Country Code (MCC), Mobile Network Code (MNC), Location Area Code (LAC/ area) and Cell Identification (CI/cellID). According to the example you shared:

  • 405-51-8086-4112 is at 87.28981, 23.54727
  • 405-51-6032-4112 is at 89.20967, 26.34247

Hi, I downloaded data for one specific country and it doesn’t have any labels for the columns. Can I just assume it is organized the same way you show here and add in those column names?

1 Like

ami me aparece todo unido como puedo hacer para que me aparezca por columnas

si solo debes de separarlas en excel ve a datos luego a texto en columnas luego a delimitados y le das por coma y listo, y ya las vas organizando como muestra en la imagen de arriba

I’ve downloaded the full database recently but I can’t find anywhere a documentation on the meaning of the “unit” column. It seems to only have 0 or -1 for value.
Can anyone explain what it means?
Thanks a lot

Hi, Sagar

I have some dilemma about this. Let’s say that I have 10 measurements for a new cell (not present in the db). If most/all of my measurements don’t really have a signal strength value (as I have read in multiple places here in the forum), additionally, if no TX power value is used, how can you do any triangulation with my values. In my basic understanding, for triangulation, you would need values for each measurement for the distance between where the measurement was taken and the cell tower. But, if no signal strength is provided (and to tx power), then no such distance value can be obtained.
I can imagine, that if these 10 measurement have only GPS values for where the measurement was taken, probably only some averaging out can happen, but not triangulation?
If this is the case, then, you can calculate the position of the cell tower by averaging out the values. Afterwards for a new batch of 10 measurements, you may not need the signal strength indication anymore and calculate the distance between each measurement taken and cell tower based on reported gps only, and only then be able to do some kind of triangulation.

Is is possible to give me insight into this or is my understanding far off from what is happening?


If you’re submitting us 10 measurements observing a single cell - without signal strength, it’ll not be possible for us to triangulate the position of that cell. We’ll use your measurements in combination with measurements from other user’s who have submitted signal strength. Your measurements can also be used as a verification of the approximate position of the cell.

Averaging only GPS coordinates of the device making these observations does not give us a good understanding of the position of the cell but it can roughly place the cell in a given city/ town.

I think I was surprised by this. Here, it says that the average signal strength for most of the cells is 0. On the other hand, you mentioned that you also do triangulation and you need signal strength for it in one way or another. So, if I understand this correctly, in order for a new cell to be registered correctly (and in order to do any triangulation for the measurements reported for that new cell), you have to have signal strength (at least for the initial measurements)? And, the reason why the average is 0 for some cells is because maybe there were too many measurements reported, where most of them don’t have any signal strength, but not all, because at least some have to be non-zero for triangulation to happen (for example, the first ones)? Basically, it shouldn’t be possible for a cell to exist in the db where the signal strength for all the measurements was 0. I guess, there can be an exception, for example, a record directly from the carrier.

Sorry for taking your time and thanks for the quick answer to my previous question.

Hey, have you managed to find out about this field?
For Brazil I can see some other values, but can not make sense of it either.

Dear Sagar,

Thanks for providing the methodology for cell position estimation, which convinced my deduction as well. But I am wondering how could you know if the received signal strength is x% of that of Cell A, without knowing the actual emission power of that Cell A?