Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

A Python wrapper for the Safecast API.

Project description


A pure Python wrapper around the Safecast API.

By the YtoTech members. Checkout our related blog post.


This library provides a pure Python interface for the Safecast API.

Safecast provides open hardware and platforms to measure and share data about people environments. Currently the Safecast API allows to publish radiation measurement data.

As they put it:

We believe that having more freely available open data is better for everyone.


You can install SafecastPy using:

$ pip install SafecastPy

PyPI version

Starting out

First, you'll want to head over to and register a new account!

After you register, grab your account API key from the profile tab.

You can also begin by testing your application on the Safecast API development instance.

First, you'll want to import SafecastPy:

import SafecastPy

Dynamic Function Arguments

Keyword arguments to functions are mapped to the functions available for each endpoint in the Safecast API docs. Doing this allows us to be incredibly flexible in querying the Safecast API, so changes to the API aren't held up from you using them by this library.

Basic Usage

All the method definitions can be found by reading over SafecastPy/


Create a SafecastPy instance with your API key:

import SafecastPy
safecast = SafecastPy.SafecastPy(

By default it uses the Safecast API production instance. You may want to use the development instance:

import SafecastPy
safecast = SafecastPy.SafecastPy(

Getting measurements

# Get the 25 last added measurements.
safecast.get_measurements(order='created_at desc'))
# Use paging to navigate through the results.
for i in range(2, 10):
  safecast.get_measurements(order='created_at desc', page=i))
# You can also filter by unit.
# Or date.
safecast.get_measurements(since='2015-09-08', until='2016-12-22')
# And use a combination of all of that.
  since='2015-09-08', until='2016-12-22',
  unit=SafecastPy.UNIT_USV, order='created_at asc',

Get more information on the available parameters on the API documentation.

Add a measurement

import datetime, random
measurement = safecast.add_measurement(json={
    'latitude': 49.418683,
    'longitude': 2.823469,
    'value': random.uniform(1, 10),
    'unit': SafecastPy.UNIT_CPM,
    'captured_at': datetime.datetime.utcnow().isoformat() + '+00:00',
    'device_id': 90,
    'location_name': '1 Rue du Grand Ferré, Compiègne',
    'height': 120
print('New measurement id: {0}'.format(measurement['id']))

Retrieve a measurement


Upload a bGeigie import

bgeigie_import = safecast.upload_bgeigie_import(files={
      'bgeigie_import[source]': open('misc/sample_bgeigie.LOG', 'rb')
  }, data={
      'bgeigie_import[name]': 'Logging in Compiègne',
      'bgeigie_import[description]': 'Around the Université de Technologie',
      'bgeigie_import[credits]': 'by YtoTech team',
      'bgeigie_import[cities]': 'Compiègne',
      'bgeigie_import[orientation]': 'NWE',
      'bgeigie_import[height]': '100'
print('New import id: {0}'.format(bgeigie_import['id']))

You enjoy the lib? You may check out our blog.

You may also send us love-notes, ask questions or give any comment at

Happy hacking!


Feel free to open a new ticket or submit a PR to improve the lib.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for SafecastPy, version 0.1.1
Filename, size File type Python version Upload date Hashes
Filename, size SafecastPy-0.1.1-py2.py3-none-any.whl (7.1 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size SafecastPy-0.1.1.tar.gz (5.3 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page