
Security News
White House Authorizes Private Companies to Conduct Offensive Cyber Operations
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.
@pondlog/source-ebird
Advanced tools
eBird API v2 client library: typed, Zod-validated, rate-limited. Returns Result<T> instead of throwing. 100% endpoint coverage (21 endpoints).
eBird API v2 client.
Typed, Zod-validated, rate-limited, returns Result<T> instead of throwing.
100% endpoint coverage. All 21 documented endpoints.
Part of pondlog.
eBird requires a free API key. Request one at ebird.org/api/keygen and export it:
export EBIRD_API_KEY=your-key-here
If the key is missing, every fetch returns a Result error with a clear
message. Call assertEbirdApiKey() at app startup to fail loudly before
issuing any requests.
The library handles the ~100 req/min rate limit internally and backs off on 429 with exponential retry.
npm install @pondlog/source-ebird @pondlog/core
| Function | Endpoint |
|---|---|
getRecentObservations(regionCode, params?) | GET /data/obs/{regionCode}/recent |
getRecentNotable(regionCode, params?) | GET /data/obs/{regionCode}/recent/notable |
getRecentOfSpecies(regionCode, speciesCode, params?) | GET /data/obs/{regionCode}/recent/{speciesCode} |
getNearbyRecent(lat, lng, params?) | GET /data/obs/geo/recent |
getNearbyNotable(lat, lng, params?) | GET /data/obs/geo/recent/notable |
getNearbyOfSpecies(lat, lng, speciesCode, params?) | GET /data/obs/geo/recent/{speciesCode} |
getHistoricOnDate(regionCode, year, month, day, params?) | GET /data/obs/{regionCode}/historic/{y}/{m}/{d} |
| Function | Endpoint |
|---|---|
getRecentChecklists(regionCode, params?) | GET /product/lists/{regionCode} |
getTop100(regionCode, year, month, day, params?) | GET /product/top100/{regionCode}/{y}/{m}/{d} |
getChecklist(subId) | GET /product/checklist/view/{subId} |
| Function | Endpoint |
|---|---|
getHotspotsInRegion(regionCode, params?) | GET /ref/hotspot/{regionCode} |
getNearbyHotspots(lat, lng, params?) | GET /ref/hotspot/geo |
getHotspotInfo(locId) | GET /ref/hotspot/info/{locId} |
| Function | Endpoint |
|---|---|
getTaxonomy(params?) | GET /ref/taxonomy/ebird (always fmt=json) |
getTaxonomicForms(speciesCode) | GET /ref/taxonomy/forms/{speciesCode} |
getTaxaLocales() | GET /ref/taxonomy/locales |
getTaxonomyVersions() | GET /ref/taxonomy/versions |
getTaxonomicGroups(grouping, params?) | GET /ref/sppgroup/{grouping} |
| Function | Endpoint |
|---|---|
getRegionInfo(regionCode, params?) | GET /ref/region/info/{regionCode} |
getSubRegions(regionType, parentRegionCode) | GET /ref/region/list/{regionType}/{parentRegionCode} |
getAdjacentRegions(regionCode) | GET /ref/adjacent/{regionCode} (subnational2 only) |
For endpoints that return shapes mappable to @pondlog/core shared types,
*Normalized variants return Observation[] / Place[] / Taxon[]:
getNearbyRecentNormalized, getNearbyNotableNormalizedgetHotspotsInRegionNormalized, getNearbyHotspotsNormalized, getHotspotInfoNormalizedgetTaxonomyNormalizedAll normalized observations get iconicTaxon: "Aves" (eBird is birds-only).
import { getNearbyRecent, getHotspotsInRegion } from "@pondlog/source-ebird";
const obs = await getNearbyRecent(48.118, -123.4307, { dist: 25, back: 7 });
if (obs.ok) {
for (const o of obs.data) {
console.log(o.comName, o.howMany ?? "?", "@", o.locName);
}
}
const hotspots = await getHotspotsInRegion("US-WA-009"); // Clallam County
if (hotspots.ok) {
console.log(`${hotspots.data.length} hotspots`);
}
eBird uses hierarchical region codes:
USUS-WAUS-WA-009 (Clallam County)The eBird API rate limit is undocumented. This client throttles at 100 req/min and retries on 429 with exponential backoff (1s, 2s, 4s, max 3 attempts).
MIT. Andrew Christison.
FAQs
eBird API v2 client library: typed, Zod-validated, rate-limited. Returns Result<T> instead of throwing. 100% endpoint coverage (21 endpoints).
We found that @pondlog/source-ebird demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
A new federal program will let vetted U.S. cybersecurity firms help investigate and disrupt foreign cybercrime groups under government direction.

Research
/Security News
The campaign amassed more than 75,000 installs by targeting Russian-speaking users seeking access to blocked services.

Company News
Open source maintainers are under more pressure than ever. We're raising our open source program from the Team plan to the Business plan, free.