Overview

xeno-canto is a community-built library of over 700,000 wild bird sound recordings from around the world. You can query by species name, country, or quality rating and get back metadata plus a direct audio file URL. It is ideal for nature apps, educational tools, or anyone learning to work with scientific data APIs.

Beginner Tip

Search with a plain GET request like https://xeno-canto.org/api/2/recordings?query=owl — no API key needed. The recordings[].file field gives you a direct MP3 link you can play immediately.

Available Data

The kind of data this API exposes, based on its documentation. We could not call the endpoint to confirm the exact field names.

Use case: Integrate bird recordings data into web and mobile applications
xeno-canto data via REST API

Example Response

Illustrative shape only — we were not able to call this endpoint (it requires credentials or exposes no public sample URL), so the fields below show the kind of data this API returns rather than a recorded response.

JSON Response · Illustrative
{
  "name": "xeno-canto",
  "data": "xeno-canto-specific information and attributes",
  "source": "xeno-canto"
}

Field Reference

numRecordings Total number of recordings matching your query
numPages Total pages available; use the page parameter to paginate through results
recordings[].en English common name of the bird species
recordings[].file Direct URL to the MP3 audio recording
recordings[].cnt Country where the recording was made
recordings[].q Quality rating from A (best) to E (worst)

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
const url = "https://xeno-canto.org/api/2/recordings?query=owl+cnt:united+states&page=1";
const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();
console.log(data);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

CORS blocked in browser xeno-canto does not advertise CORS support, so browser fetch calls may be rejected
Make requests from a backend Node.js or Python script rather than directly from browser JavaScript
numRecordings returns 0 Misspelled species name or no recordings exist for that region filter
Try the scientific name (e.g. "Strix aluco") for more reliable results than common names
Empty page response Requesting a page number beyond the total available pages
Read the numPages field in the first response and stay within that range when paginating

Metadata Score Breakdown

Estimated from metadata — endpoint not independently tested

This score is estimated from observable metadata — HTTPS support, authentication model, declared CORS, and documentation reachability — because the API requires authentication or exposes no publicly testable endpoint. The five-signal breakdown is only shown for live-tested APIs.

Metadata estimate · endpoint not independently tested

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS UNKNOWN
Category Animals
Difficulty Beginner
Listing details not endpoint-verified

Related Tags

Similar APIs

View All →