LogoLogo
UpdatesGPS trackersLoginFree trial
  • Welcome
  • Quick start guide
  • Provide live tracking
    • Features of visualization
    • Leaderboard
    • Monitor
    • Group and stages
    • Embed interactive content
    • Keys and passcode
    • Activity upload
    • Deep links on tracking app
    • Shadowtrack and mapping
  • Data APIs for live geodata
    • */current, location data
    • */distance and locations
    • */times, reads and raw data
    • */ranks, ranking and results
    • */starters, athlete data
    • */geo, geo elements
    • Tools to extract live data
  • Import participant data
    • Import with API, automatically
      • Generic import
      • RACE RESULT import
    • Import with CSV file
  • Tracker management
    • Add GPS trackers
    • Add RACE RESULT readers
    • Add devices to event
    • Send messages
    • Compose messages
    • User access to devices
    • Manage SIM cards
  • Hardware for live tracking
    • Configure GPS tracker
      • Remote configuration
      • Physical configuration
    • Update firmware of GPS tracker
    • Configuring trackers for increased autonomy
    • Track Box forwarding
    • Insiders GPS trackers
    • Prepare smartphone
    • Using GPS trackers On-Site
    • Debug tracking devices
  • Predictive tracking with reads from race timing
    • RACE RESULT
    • Other timing system
      • ChronoTrack forwarder
      • MyLaps forwarder
  • Integrations
    • Wiclax
  • Map settings
    • External map layer
  • Export data from RACEMAP
    • Hosted elevation service
    • Hosted loads information
    • Download leaderboard CSV
    • Download recorded GPX
Powered by GitBook
LogoLogo

Legacy

  • Contact
  • Terms of use
  • Privacy Policy
  • Imprint

About Racemap

  • Pricing
  • About Us
  • Apps
  • Events

Follow us

  • facebook
  • youtube
  • linkedin
  • github

Maps: ©Mapbox ©OpenStreetMap ©RACEMAP

On this page
  • Request
  • Response
  • Export to RACE|RESULT
  1. Data APIs for live geodata

*/times, reads and raw data

API with passings or detections (raw data timestamps) at virtual checkpoints respectively geofences, similar to a reader

Previous*/distance and locationsNext*/ranks, ranking and results

Last updated 9 months ago

The */times API generates a detection from a received location if it fulfills three conditions. The API can provide multiple detections for a split.

  • The device id belongs to the event.

  • The location is around the detection radius of a geofence.

  • The timestamp of the location is between the event start- and end time.

  • Effortless detections with virtual timekeeping points (geofence) and with geolocations of participants. No timing hardware, no transponders.

  • Passings are recorded in a radius around the geofence. Set the radius in the setting of the data API of your event.

  • Flexibly adjust settings in between: add timekeeping points or change their locations of a running event or even of a past event, recalculate detections with new parameters.

Request

URL https://racemap.com/api/data/v1/:eventId/times Method GET

Live sample Past sample

Optional query with id of a checkpoint

  • The id of a virtual timekeeping point to get all reads of this geofence in chronological order.

  • Live sample split "Split 3"

  • Past sample split "Finish"

Response

Event object

Field
Description [unit]
Sample

name

Name of event

"Sample live | 100km Duathlon"

location

Location

"🇩🇪 Dresden"

startTime

Start time in UTC

"2022-03-09T07:00:03.201Z"

endTime

End time in UTC

"2022-03-09T14:59:38.201Z"

timekeepings

Array for checkpoint objects

starters

Array for participant objects

Checkpoint object

Field
Description
Sample

name

Name of virtual timekeeping point

"Split 5"

offset

49222.81

id

Unique Racemap ID of timekeeping point

"6450e60747adaed475b48"

position

Array with longitude, latitude, hight [m]

13.881129999, 51.075250000, 250

Participant object

Field
Description [unit]
Sample

id

Unique Racemap ID of participant

"61a2122f181c0a6c4bb5376e"

importId

"UniqueImportId_2" or "null" if no importId exists

startNumber

Bib number

"2"

name

Name

"CLV Megware"

times

Object for checkpoint arrays

null if no locations within startTime and endTime {} if there are locations but no detections

Checkpoint array

Description
Sample

Unique Racemap ID of timekeeping point, array for detection objects

6450e60747adaed475b484b4

Detection object

Field
Description [unit]
Sample

time

Timestamp of detection in UTC

"2022-03-09T10:08:00.000Z"

distanceToSplit

Distance [m] of detection from timekeeping point

43.96

Sample response

{
  "name": "Sample | 100km Duathlon",
  "location": "🇩🇪 Dresden",
  "startTime": "2020-04-25T06:00:00Z",
  "endTime": "2020-10-30T18:15:00Z",
  "timekeepings": [
    {
      "name": "Start",
      "offset": 0,
      "position": [13.704069467101244, 51.027617808548015, 159],
      "id": "64513872c3ab09659eb09674"
    },
    {
      "name": "Ruppendorf",
      "offset": 29510,
      "position": [13.599722542890463, 50.90910508578093, 377],
      "id": "64513873368d2f24f3a5feb9"
    },
    {
      "name": "🕖",
      "offset": 48130,
      "position": [13.633563734472718, 50.77911506210913, 570],
      "id": "64513873a2c6e28dbe010405"
    },
    {
      "name": "Bergwertung",
      "offset": 49950,
      "position": [13.623273503927214, 50.76995405256768, 743],
      "id": "64513874c3ab09659eb096b5"
    },
    {
      "name": "🕖",
      "offset": 67660,
      "position": [13.69125, 50.82612, 471],
      "id": "645138746451816d07b38788"
    },
    {
      "name": "Bergwertung",
      "offset": 68780,
      "position": [13.697525647974045, 50.83382486871975, 603],
      "id": "6451387410e583b28d7167e6"
    },
    {
      "name": "Finish",
      "offset": 100260,
      "position": [13.704038205094022, 51.02687962934201, 166],
      "id": "64513872c3ab09659eb09683"
    }
  ],
  "starters": [
    {
      "id": "60a3b6791474227ee54a5bdf",
      "importId": "UniqueImportId_1",
      "startNumber": "01",
      "name": "Konrad",
      "times": null
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "times": {
        "64513872c3ab09659eb09674": [
          {
            "time": "2020-04-26T08:23:55Z",
            "distanceToSplit": 16.81
          },
          {
            "time": "2020-04-26T08:24:00Z",
            "distanceToSplit": 8.92
          }
        ],
        "64513873368d2f24f3a5feb9": [
          {
            "time": "2020-04-26T10:19:45Z",
            "distanceToSplit": 20.36
          },
          {
            "time": "2020-04-26T10:19:50Z",
            "distanceToSplit": 26.4
          }
        ],
        "64513873a2c6e28dbe010405": [
          {
            "time": "2020-04-26T11:30:40Z",
            "distanceToSplit": 14.17
          },
          {
            "time": "2020-04-26T11:30:45Z",
            "distanceToSplit": 15.18
          }
        ],
        "64513874c3ab09659eb096b5": [
          {
            "time": "2020-04-26T11:41:05Z",
            "distanceToSplit": 19.22
          },
          {
            "time": "2020-04-26T11:41:10Z",
            "distanceToSplit": 4.46
          }
        ],
        "645138746451816d07b38788": [
          {
            "time": "2020-04-26T13:00:30Z",
            "distanceToSplit": 16.19
          },
          {
            "time": "2020-04-26T13:00:35Z",
            "distanceToSplit": 8.29
          },
          {
            "time": "2020-04-26T13:00:40Z",
            "distanceToSplit": 17.85
          },
          {
            "time": "2020-04-26T13:00:45Z",
            "distanceToSplit": 27.8
          }
        ],
        "6451387410e583b28d7167e6": [
          {
            "time": "2020-04-26T13:08:40Z",
            "distanceToSplit": 26.12
          },
          {
            "time": "2020-04-26T13:08:45Z",
            "distanceToSplit": 12.82
          },
          {
            "time": "2020-04-26T13:08:50Z",
            "distanceToSplit": 4.25
          },
          {
            "time": "2020-04-26T13:08:55Z",
            "distanceToSplit": 15.45
          }
        ],
        "64513872c3ab09659eb09683": [
          {
            "time": "2020-04-26T14:50:30Z",
            "distanceToSplit": 28.16
          },
          {
            "time": "2020-04-26T14:50:35Z",
            "distanceToSplit": 2.91
          }
        ]
      }
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "times": {
        "64513872c3ab09659eb09674": [
          {
            "time": "2020-05-01T07:49:45Z",
            "distanceToSplit": 13.06
          },
          {
            "time": "2020-05-01T07:49:50Z",
            "distanceToSplit": 10.56
          },
          {
            "time": "2020-05-01T13:06:25Z",
            "distanceToSplit": 19.77
          },
          {
            "time": "2020-05-01T13:06:30Z",
            "distanceToSplit": 17.84
          }
        ],
        "64513873368d2f24f3a5feb9": [
          {
            "time": "2020-05-01T09:26:45Z",
            "distanceToSplit": 1.69
          }
        ],
        "64513873a2c6e28dbe010405": [
          {
            "time": "2020-05-01T10:24:35Z",
            "distanceToSplit": 12.15
          },
          {
            "time": "2020-05-01T10:24:40Z",
            "distanceToSplit": 22.72
          }
        ],
        "64513874c3ab09659eb096b5": [
          {
            "time": "2020-05-01T10:34:50Z",
            "distanceToSplit": 27.7
          },
          {
            "time": "2020-05-01T10:34:55Z",
            "distanceToSplit": 1.95
          }
        ],
        "645138746451816d07b38788": [
          {
            "time": "2020-05-01T11:24:30Z",
            "distanceToSplit": 18.56
          },
          {
            "time": "2020-05-01T11:24:35Z",
            "distanceToSplit": 10.39
          },
          {
            "time": "2020-05-01T11:24:40Z",
            "distanceToSplit": 22.24
          }
        ],
        "6451387410e583b28d7167e6": [
          {
            "time": "2020-05-01T11:31:30Z",
            "distanceToSplit": 29.7
          },
          {
            "time": "2020-05-01T11:31:35Z",
            "distanceToSplit": 10.6
          },
          {
            "time": "2020-05-01T11:31:40Z",
            "distanceToSplit": 5.61
          },
          {
            "time": "2020-05-01T11:31:45Z",
            "distanceToSplit": 22.52
          }
        ],
        "64513872c3ab09659eb09683": [
          {
            "time": "2020-05-01T13:06:15Z",
            "distanceToSplit": 11.25
          },
          {
            "time": "2020-05-01T13:06:20Z",
            "distanceToSplit": 25.62
          }
        ]
      }
    }
  ]
}

Sample response with id of checkpoint

Times array with detection objects

Field
Description [unit]
Sample

id

Unique Racemap ID of participant

"6450e60747adaed475b48"

importId

"UniqueImportId_2"

startNumber

Bib number

"02"

name

Name

"Jörg"

time

Timestamp of detection in UTC

"2022-03-09T10:08:00.000Z"

distanceToSplit

Distance [m] of detection from timekeeping point

16.19

{
  "name": "Sample | 100km Duathlon",
  "location": "🇩🇪 Dresden",
  "startTime": "2020-04-25T06:00:00Z",
  "endTime": "2020-10-30T18:15:00Z",
  "timekeepingId": "6451387410e583b28d7167e6",
  "timekeepingName": "Bergwertung",
  "times": [
    {},
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:45Z",
      "distanceToSplit": 12.82
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:50Z",
      "distanceToSplit": 4.25
    },
    {
      "id": "60a3b679147422b72a4a5be0",
      "importId": "UniqueImportId_2",
      "startNumber": "02",
      "name": "Jörg",
      "time": "2020-04-26T13:08:55Z",
      "distanceToSplit": 15.45
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:30Z",
      "distanceToSplit": 29.7
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:35Z",
      "distanceToSplit": 10.6
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:40Z",
      "distanceToSplit": 5.61
    },
    {
      "id": "60a3b67914742230ef4a5be2",
      "importId": "UniqueImportId_3",
      "startNumber": "03",
      "name": "Leupold",
      "time": "2020-05-01T11:31:45Z",
      "distanceToSplit": 22.52
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:35Z",
      "distanceToSplit": 17.72
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:40Z",
      "distanceToSplit": 7.18
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:45Z",
      "distanceToSplit": 11.5
    },
    {
      "id": "60a3b679147422101b4a5be3",
      "importId": "UniqueImportId_4",
      "startNumber": "04",
      "name": " KRad",
      "time": "2020-05-02T10:41:50Z",
      "distanceToSplit": 29.53
    }
  ]
}

Export to RACE|RESULT

RACE|RESULT event settings: Main Window, Simple API

  • Type: Custom

  • Details: rawdata/addmanual

Data from Racemap */times API need be transferred to RACE|RESULT API format, e.g. with a python script:

  • syntax: https://api.raceresult.com/eventId/apiKey?&bib=bibNumber&time=timeOfDetections&TimingPoint=splitName

  • timeOfDetections in seconds

Using this format virtual detections are imported in RACE|RESULT one by one.

Distance [m] along the

User-defined ID with imported participant data, (importId) or (Id)

Checkpoint "Bergwertung"

User-defined ID with imported participant data, (importId) or (Id)

Settings create an API key to push external data to RACE|RESULT. The duration of the key is limited. Sample:

sample:

https://racemap.com/api/data/v1/61a21210e5d45d000199f7d9/times
https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times
https://racemap.com/api/data/v1/61a21210e5d45d000199f7d9/times/6450e60747adaed475b484b4
https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/64513872c3ab09659eb09683
https://racemap.com/api/data/v1/60a3b443f096f800018add7c/times/6451387410e583b28d7167e6
https://api.raceresult.com/180472/G5XQYZKPIPU5J1RSCVIZ48QKVU5JIIJP
https://api.raceresult.com/180472/G5XQYZKPIPU5J1RSCVIZ48QKVU5JIIJP?&bib=1&time=36600&TimingPoint=Messstelle1
shadowtrack
Generic API
RACE|RESULT API
Generic API
RACE|RESULT API