Skip to main content

eBird API Data

eBird API Data is a reusable Django app for loading data from eBird into a database.

Overview

The Cornell Laboratory of Ornithology in Ithaca, New York runs the eBird database which collects observations of birds from all over the world. All the observations are published on eBird.org, and they also make them available via an API. This project contains a loader and models to take data from the API and load it into a database. From there you can analyse the data with python, jupyter notebooks, or build a web site.

To get started, you will need to sign up for an eBird account, if you don't already have one and register to get an API key. Make sure you read and understand the Terms of use, and remember bandwidth and servers cost money, so don't abuse the service. If you need large numbers of observations, then sign up to receive the eBird Basic Dataset.

Install

You can use either pip or uv to download the package from PyPI and install it into a virtualenv:

pip install ebird-api-data

or:

uv add ebird-api-data

Update INSTALLED_APPS in your Django setting:

INSTALLED_APPS = [
    ...
    ebird.api.data
]

Finally, run the migrations to create the tables:

python manage.py migrate

Demo

If you check out the code from the repository there is a fully functioning Django site. It contains pages for checklists, observations and species, where you can browse the records or search by location, observer. date. etc. The Django Admin lets you browse and edit the records in the database.

git clone git@github.com:StuartMacKay/ebird-api-data.git
cd ebird-api-data

Create the virtual environment:

uv venv

Activate it:

source .venv/bin/activate

Install the requirements:

uv sync

Create a copy of the .env.example file and add your API key:

cp .env.example .env

For example:

EBIRD_API_KEY=<my api key>

Run the database migrations:

python manage.py migrate

Create a user:

python manage.py createsuperuser

Create a copy of the .env.example file and add your API key:

cp .env.example .env
EBIRD_API_KEY=<my api key>

Now, download data from the API:

python manage.py add_checklists --days -2 US-NY-109

This loads all the checklists, submitted in the past two days by birders in Tompkins County, New York, where the Cornell Lab is based. You can use any location code used by eBird, whether it's for a country, state/region, or county. Remember, read the terms of use.

Run the demo:

python manage.py runserver

Now, either visit the site, http:localhost:8000/, or log into the Django Admin, http:localhost:8000/admin to browse the tables.

IMPORTANT: There is a serious flaw in the eBird API - observers are identified by name. That means if more than one observer shares the same name then only one Observer record will be added to the database, and all the checklists will be assigned to them. In practice, most people ensure their name is unique by adding middle initial's etc. However it is a problem with "Anonymous eBirder". The solution is to add two Observer records with the name "Anonymous eBirder", and a fake identifier, e.g. ANON1, ANON2, etc. That way the loader will first scrape the web page for the checklist where the identifier, e.g. USER2743448, can be found, and so the checklist will be assigned to the correct Observer. Use this workaround for any other observers you encounter that share the same name. This won't work retroactively, but then you can delete the checklists, and manually reload them.

Project Information

The repository is also mirrored on Github:

The app is tested on Python 3.10+, and officially supports Django 4.2, 5.0 and 5.1.

License

eBird API Data is released under the terms of the MIT license.

Metadata

Release files for ebird-api-data 0.5.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ebird-api-data 0.5.1
File Size Uploaded
ebird_api_data-0.5.1.tar.gz 25.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ebird-api-data 0.5.1
File Interpreter ABI Platform
ebird_api_data-0.5.1-py3-none-any.whl Python 3 none any Details

Total release size: 62.1 kB

Release files / ebird_api_data-0.5.1.tar.gz

Download URL ebird_api_data-0.5.1.tar.gz
Size 25.8 kB
Tags Source
SHA-256 checksum
How to use checksums
41da94f587c4c5e032ced1aedf2779121b691d4d12fdcedf932f16b43d2408f8
BLAKE2b-256 checksum
How to use checksums
a9aeb7776a90c4f91edad94eaacd03a785385cadb63f5b85ac1aa4bf8717640c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / ebird_api_data-0.5.1-py3-none-any.whl

Download URL ebird_api_data-0.5.1-py3-none-any.whl
Size 36.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5914811dd8f1a1dd9afa3b07cd5e85f2634eaa1770b1291a48ed9b5914ae459c
BLAKE2b-256 checksum
How to use checksums
581ac50d32e34119b45ef8270bfc6470270be12dbe7f7c57d98b8e20fff191bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.5.1 This release

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page