Skip to content


Traccar offers a free, open-source solution for researchers to gather GPS data from many participants. It achieves this through a robust client-server architecture, ensuring the security and reliability of your data collection process.

The system consists of two main components:

Traccar Server
This server-side application (runs on a computer) acts as a central hub, receiving data from participant devices. It also provides a web interface for researchers to configure the system and access collected information.
Traccar Client
This mobile application, available for Android and iOS, runs on participants' phones. It collects GPS data and sensor readings and then transmits them securely to the Traccar Server.

Traccar also offers API, which researchers can use with the LABDA package to download, parse, and integrate the collected data seamlessly into their analysis for in-depth exploration. Traccar simplifies the entire data collection and processing workflow for researchers.

For detailed information on Traccar server and client functionalities, visit their official website.


Offline Buffering: If a phone loses connection, any GPS data collected during that time won't be saved. However, Traccar can temporarily store data on the device, but it might take over 24 hours to reach the server after reconnection.

Battery Drain: The client app can be pretty demanding on phone batteries. Participants might need to charge their phones more often to ensure uninterrupted tracking.

How to use it?

Below, we've outlined the steps to get started with Traccar.



This guide is for advanced users only. For most people, a cloud-based Traccar solution is easier to use. If you want to host your server at your institution, contact your IT department for assistance.

This docker-compose setup offers a simplified approach to launching the Traccar Server locally. It utilizes the built-in H2 database, allows customization through your configuration file, and directs logs to a designated folder.

version: "3.9"

    image: traccar/traccar:ubuntu
    container_name: traccar
    restart: unless-stopped
      - 8082:8082
      - 5000-5150:5000-5150
      - 5000-5150:5000-5150/udp
      - ./logs:/opt/traccar/logs:rw
      - ./conf/traccar.xml:/opt/traccar/conf/traccar.xml:ro

To create a custom configuration file, refer to the provided template and list of customizable parameters.


Download the mobile client apps for Android and iOS. To configure the app for your research project, you'll need to adjust these settings:

Service status
Enable/disable the data collection.
Device Identifier
This unique ID is crucial. The administrator must manually add your device to the Traccar server.
Server URL
Enter the web address of your Traccar server.
Location Accuracy
Set this to "High" for continuous GPS tracking. Other options rely on cell towers for location, which can be less precise.
Frequency (seconds)
Choose how often location data is logged (ideally 15, 30, or 60 seconds).
Distance (meters)
Leave this blank. It only sends data when the location changes by a set distance.
Angle (meters)
Like distance, leave it blank for continuous updates.
Offline Buffering
Enable this to store data on the phone if there's no connection. It will be sent later (up to 24 hours).
Wake Lock
This prevents the phone from sleeping and ensures uninterrupted tracking.

Important Reminders

Allow the app to collect data in the background and make sure the app doesn't get automatically closed when idle.



    url: str,
    username: str,
    password: str,
    subject_id: str,
    start: datetime | None = None,
    end: datetime | None = None,
    sampling_frequency: float | None = None,
    crs: str | None = "infer",
    timezone: str | None = "infer",
    sensor_id: str | None = None,
    vendor: Vendor = Vendor.TRACCAR,
    model: str | None = None,
    serial_number: str | None = None,
    firmware_version: str | None = None,
    accuracy_limit: int | float | None = None,
    environment_limit: int | float | None = None
) -> Subject

The Traccar API allows you to download data from a specific server (URL) using your login credentials (username and password). To obtain data for a particular device, you must specify a subject ID (which corresponds to the device identifier). Optionally, you can define a date and time range to download data for a specific timeframe. If no date range is provided (from/to), all data for the chosen device will be downloaded.

The downloaded data will be parsed and validated according to the schema defined in the structure module.


Name Type Description Default
url str

The URL of the Traccar server.

username str

The username to authenticate with the server.

password str

The password to authenticate with the server.

subject_id str

The ID of the subject to fetch data for (corresponds to the device identifier).

start datetime

The start time of the data to fetch. If not provided, it will fetch all available data.

end datetime

The end time of the data to fetch. If not provided, it will fetch all available data.

sampling_frequency float

The sampling frequency of the data. If not provided, it will be infered from data.

timezone str

The timezone of the data. If set to "infer" it will be inferred from the data. If None it will be set to the local timezone. Otherwise, it will be set to the provided timezone.

crs str

The coordinate reference system (CRS) of the data. If set to "infer" it will be inferred from the data. If None it will be set to "EPSG:4326". Otherwise, it will be set to the provided CRS.

sensor_id str

The ID of the sensor to fetch data for. If not provided, unique device ID from Traccar server will be used (if available).

vendor Vendor

The vendor of the device. Defaults to "Traccar".

model str

The model of the device. If not provided, it will be fetched from the Traccar server (device - extra, phone + model) if available.

serial_number str

The serial number of the device.

firmware_version str

The firmware version of the device.

accuracy_limit int | float

The maximum allowed GPS accuracy. If not provided, all points will be included, otherwise only points with accuracy less to the provided value will be included.

environment_limit int | float

The maximum allowed GPS accuracy to determine if the point is indoor or outdoor. If point accuracy is less to the provided value, the point will be marked as indoor, otherwise it will be marked as outdoor. If not provided, environment will not be detected.



Name Type Description
Subject Subject

A Subject object containing the fetched and processed dataframe containing information: datetime, latitude, longitude, gps_accuracy, distance, elevation, and speed.


Type Description

HTTP request to the Traccar server failed.


No device is found for the specified subject ID.


No records are found for the specified device.


Environment limit must be lower than accuracy limit.


Here's how to call the function with just the minimum required parameters.

from labda.parsers import Traccar

subject = Traccar.from_server(