iDigBio API
Free iDigBio search API with no key: query 140M+ digitised museum specimen records in Darwin Core, with locality, collector, date and media. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the iDigBio API?
The iDigBio search API is a free, key-free interface to more than 140 million digitised biological specimen records from natural history collections. Records come back in Darwin Core terms with taxonomy, collecting locality, coordinates, collector, dates and links to specimen images.
iDigBio is the US national aggregator for digitised natural history collections — the physical specimens in museum drawers, with their labels transcribed and often photographed. That makes it different from observation-based biodiversity data: each record is backed by a preserved object someone can re-examine, with a catalogue number and an institution behind it. For historical distribution work and for anything where the identification must be verifiable, that provenance is the point.
Queries go in a JSON object passed as the `rq` query parameter, URL-encoded — an unusual pattern that trips people up, but it means the full query grammar including ranges, geographic filters and boolean combinations is available in a GET. Records arrive under `data` with their original Darwin Core term names, prefixed `dwc:` and `dcterms:`, exactly as the institution supplied them. That fidelity is deliberate and it means the data is messy: dates in many formats, coordinates of varying precision, and identifications of varying age. Read `dwc:dateIdentified` and `dwc:identificationRemarks` before treating a determination as current.
Quick facts
- Base URL
https://search.idigbio.org/v2- Authentication
- No API key or account. Individual records carry the licence set by the contributing institution, most commonly CC0 or CC BY; iDigBio asks that you cite both the aggregator and the source collections.
- Rate limit
- No published hard limit. iDigBio provides a download API for large result sets, which is the intended route beyond a few thousand records.
- Pricing
- Free. Record licences are set by contributing institutions.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the iDigBio API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search specimen records for a species
GET https://search.idigbio.org/v2/search/records?rq=%7B%22scientificname%22%3A%22puma%20concolor%22%7D&limit=1
curl 'https://search.idigbio.org/v2/search/records?rq=%7B%22scientificname%22%3A%22puma%20concolor%22%7D&limit=1'const res = await fetch("https://search.idigbio.org/v2/search/records?rq=%7B%22scientificname%22%3A%22puma%20concolor%22%7D&limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://search.idigbio.org/v2/search/records?rq=%7B%22scientificname%22%3A%22puma%20concolor%22%7D&limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"itemCount": 3314,
"lastModified": "2026-04-23T17:00:33.061Z",
"items": [
{
"uuid": "0746b188-c390-4ab1-bd20-5489a9c6c33c",
"type": "records",
"etag": "415551d4f124c12ab39ab088d03b122370a811d2",
"data": {
"dwc:identificationRemarks": "Former nature_of_id: expert.",
"dc:language": "en",
"dc:type": "PhysicalObject",
"dwc:recordedBy": "Collector(s): Javier Vasquez",
"dwc:georeferencedDate": "2013-05-18 00:00:00",
"dwc:earliestEonOrLowestEonothem": "Phanerozoic",
"dcterms:accessRights": "http://arctosdb.org/home/data/",
"dwc:occurrenceID": "https://arctos.database.museum/guid/UTEP:ES:107-1142",
"dwc:dateIdentified": "2013-07-27",
"dwc:earliestEpochOrLowestSeries": "Pleistocene",
"id": "https://arctos.database.museum/guid/UTEP:ES:107-1142",
"dwc:minimumElevationInMeters": "1645",
"dwc:stateProvince": "Texas",
"dwc:locationRemarks": "Rio Grande drainage",
"dwc:eventDate": "2013-05-18/2013-05-18",
"dwc:collectionID": "https://arctos.database.museum/collection/UTEP:ES",
"dwc:institutionCode": "UTEP",
"dwc:country": "United States",
"dwc:earliestPeriodOrLowestSystem": "Quaternary",
"dwc:collectionCode": "Earth Science",
"dwc:higherClassification": "Animalia, Chordata, Mammalia, Carnivora, Felidae, Puma, Puma concolor",
"dwc:decimalLatitude": "31.205281",
"dwc:maximumElevationInMeters": "1645",
"dwc:locationAccordingTo": "Javier Vasquez",
"dwc:basisOfRParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
rq | query | Required | The record query as a URL-encoded JSON object. Supports exact matches, ranges, geographic filters and boolean logic. {"scientificname":"puma concolor"} |
limit | query | Optional | Records per page, up to 5000 on the search endpoint. 1 |
offset | query | Optional | Zero-based offset for paging. 0 |
fields | query | Optional | JSON array of field names to return, keeping responses small. ["dwc:scientificName","dwc:country"] |
sort | query | Optional | JSON array of sort specifications. ["dwc:eventDate"] |
(endpoint) /search/media | path | Optional | Search specimen images and other media instead of records. /v2/search/media |
Response fields
itemCountinteger- Total matching records, independent of `limit`.
items[].uuidstring- iDigBio's stable identifier for the specimen record.
items[].dataobject- The record as supplied, with original Darwin Core term names prefixed `dwc:` and `dcterms:`.
data['dwc:scientificName'] / ['dwc:higherClassification']string- Determination and classification as recorded by the institution, which may be decades old.
data['dwc:decimalLatitude'] / ['dwc:decimalLongitude']string- Coordinates as strings, of varying precision. Many older records are georeferenced retrospectively from locality text.
data['dwc:eventDate']string- Collection date, in whatever format the institution used — frequently a range or a partial date.
data['dwc:institutionCode'] / ['dwc:collectionCode']string- Which museum and collection holds the physical specimen.
What you can build with the iDigBio API
- Map historical collection localities for a species
- Find museum specimens available for loan or examination
- Study range shifts by comparing old and recent specimen records
- Pull specimen images for identification reference
- Audit a collection's digitised records against its catalogue
Common errors and how to fix them
400
The `rq` parameter was not valid URL-encoded JSON.
Fix: Build the query object, serialise it to JSON, then URL-encode the whole string. Double-encoding and unencoded braces are the usual failures.
Empty items
Field names or values did not match.
Fix: Query field names are lowercase index names such as `scientificname`, not the `dwc:` terms that appear in responses. The two vocabularies differ.
Inconsistent date formats
Records preserve the institution's original values.
Fix: `dwc:eventDate` can be a year, a range or a full timestamp. Parse defensively and expect failures on a small percentage of records.
Coordinates missing or imprecise
Many specimens predate GPS.
Fix: Check for georeferencing metadata before mapping. Retrospectively georeferenced localities can be accurate to tens of kilometres.
iDigBio API — frequently asked questions
Is the iDigBio API free?
Yes, free with no key or registration. Individual records carry licences set by the contributing institutions, most often CC0 or CC BY, and iDigBio asks that you cite both the aggregator and the source collections.
How is iDigBio different from GBIF?
iDigBio focuses on digitised physical specimens from US natural history collections, preserving the original Darwin Core record verbatim. GBIF aggregates globally and includes large volumes of human observation data alongside specimens. Overlap is substantial but the emphases differ.
How do I write a query?
Build a JSON object of field-value pairs, serialise it, and pass it URL-encoded as the `rq` parameter. The grammar supports exact matches, ranges, geographic shapes and boolean composition, all within a normal GET request.
Can I trust the species identifications?
With care. Each record reflects the determination made by whoever last examined the specimen, which may have been decades ago and before subsequent taxonomic revisions. Check `dwc:dateIdentified` and `dwc:identificationRemarks`, and remember the specimen itself can be re-examined — which is exactly why specimen data is valuable.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
CSV to GeoJSON Converter
Turn a CSV of coordinates into a GeoJSON FeatureCollection, picking the latitude and longitude columns and keeping every other column as a property.
iDigBio is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.