{"openapi":"3.1.0","info":{"title":"npm Download Stats API","version":"1.0.0","description":"How popular is that npm package? Get download counts and trends for any npm package straight from npm's public download API. Pull the total downloads over a period (last day, week, month, year or any custom YYYY-MM-DD:YYYY-MM-DD range), the full per-day download time series, the monthly totals over the last year to spot growth or decline, and compare several packages side by side ranked by downloads (up to 128 at once, scoped @org/name packages supported). Every call is live (no cache). 5 endpoints. Built for popularity dashboards, package-comparison pages, trend charts, dependency-health scoring and \"which library won\" analyses. Distinct from an npm registry-metadata lookup — this is the download time series. No upstream key, no cache.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/npmstats-api","description":"oanor gateway"}],"tags":[{"name":"Downloads"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/compare":{"get":{"operationId":"get_v1_compare","tags":["Downloads"],"summary":"Compare packages by downloads","description":"","parameters":[{"name":"packages","in":"query","required":true,"description":"Comma-separated package names","schema":{"type":"string"},"example":"react,vue,svelte"},{"name":"period","in":"query","required":false,"description":"last-day|last-week|last-month|last-year or YYYY-MM-DD:YYYY-MM-DD","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"count":3,"period":"last-month","results":[{"package":"react","downloads":545807989},{"package":"vue","downloads":51037804},{"package":"svelte","downloads":19593106}]},"meta":{"timestamp":"2026-06-02T16:52:06.695Z","request_id":"f36a5032-4863-453a-a88a-e2034b88d60d"},"status":"ok","message":"Compare packages","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/downloads":{"get":{"operationId":"get_v1_downloads","tags":["Downloads"],"summary":"Total downloads for a package","description":"","parameters":[{"name":"package","in":"query","required":true,"description":"npm package name","schema":{"type":"string"},"example":"react"},{"name":"period","in":"query","required":false,"description":"last-day|last-week|last-month|last-year or YYYY-MM-DD:YYYY-MM-DD","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2026-05-31","start":"2026-05-02","period":"last-month","package":"react","downloads":545807989},"meta":{"timestamp":"2026-06-02T16:52:06.863Z","request_id":"16447a10-1986-4b28-b1d9-fb71958766a7"},"status":"ok","message":"Total downloads for a package","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/range":{"get":{"operationId":"get_v1_range","tags":["Downloads"],"summary":"Per-day download series","description":"","parameters":[{"name":"package","in":"query","required":true,"description":"npm package name","schema":{"type":"string"},"example":"express"},{"name":"period","in":"query","required":false,"description":"last-day|last-week|last-month|last-year or YYYY-MM-DD:YYYY-MM-DD","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2026-05-31","days":[{"day":"2026-05-02","downloads":6889123},{"day":"2026-05-03","downloads":6697229},{"day":"2026-05-04","downloads":15115107},{"day":"2026-05-05","downloads":17064818},{"day":"2026-05-06","downloads":17198625},{"day":"2026-05-07","downloads":17414056},{"day":"2026-05-08","downloads":15834962},{"day":"2026-05-09","downloads":7553803},{"day":"2026-05-10","downloads":7182718},{"day":"2026-05-11","downloads":17429221},{"day":"2026-05-12","downloads":19141509},{"day":"2026-05-13","downloads":18945793},{"day":"2026-05-14","downloads":17371495},{"day":"2026-05-15","downloads":16305565},{"day":"2026-05-16","downloads":7815800},{"day":"2026-05-17","downloads":7938810},{"day":"2026-05-18","downloads":18012759},{"day":"2026-05-19","downloads":18878799},{"day":"2026-05-20","downloads":18843169},{"day":"2026-05-21","downloads":18377693},{"day":"2026-05-22","downloads":16493514},{"day":"2026-05-23","downloads":8255760},{"day":"2026-05-24","downloads":8338238},{"day":"2026-05-25","downloads":14139666},{"day":"2026-05-26","downloads":17911867},{"day":"2026-05-27","downloads":18925976},{"day":"2026-05-28","downloads":18795174},{"day":"2026-05-29","downloads":16481371},{"day":"2026-05-30","downloads":8295718},{"day":"2026-05-31","downloads":7891754}],"start":"2026-05-02","total":425540092,"period":"last-month","package":"express"},"meta":{"timestamp":"2026-06-02T16:52:07.169Z","request_id":"502965bc-44dd-4bcc-b8dd-dc78941aee82"},"status":"ok","message":"Per-day download series","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/trends":{"get":{"operationId":"get_v1_trends","tags":["Downloads"],"summary":"Monthly totals over last year","description":"","parameters":[{"name":"package","in":"query","required":true,"description":"npm package name","schema":{"type":"string"},"example":"lodash"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"end":"2026-05-31","start":"2025-06-01","trend":[{"month":"2025-06","downloads":356457248},{"month":"2025-07","downloads":364610072},{"month":"2025-08","downloads":309842258},{"month":"2025-09","downloads":320201476},{"month":"2025-10","downloads":331719356},{"month":"2025-11","downloads":327817574},{"month":"2025-12","downloads":314407327},{"month":"2026-01","downloads":353210463},{"month":"2026-02","downloads":429693946},{"month":"2026-03","downloads":564629262},{"month":"2026-04","downloads":612434806},{"month":"2026-05","downloads":650155115}],"months":12,"package":"lodash"},"meta":{"timestamp":"2026-06-02T16:52:07.996Z","request_id":"6f37d080-9344-4d64-8ace-9511ff27f552"},"status":"ok","message":"Monthly trend over last year","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"auth":"none upstream; this gateway requires x-api-key","name":"npm Download Stats API","note":"Download counts and trends for any npm package. /v1/downloads?package=react&period=last-month (periods: last-day|last-week|last-month|last-year or YYYY-MM-DD:YYYY-MM-DD), /v1/range for the per-day series, /v1/compare?packages=react,vue,svelte to rank several, /v1/trends for monthly totals over the last year. Live, no cache.","source":"npm downloads API (api.npmjs.org/downloads) — public, no key","endpoints":5},"meta":{"timestamp":"2026-06-02T16:52:08.087Z","request_id":"e595c296-64db-4211-9b06-5989e4a2fd87"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1950,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":750,"monthly_call_quota":43000,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2500,"monthly_call_quota":225000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5900,"monthly_call_quota":1100000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/npmstats-api"}