{"id":20823137,"url":"https://github.com/developmint/npm-stats-api","last_synced_at":"2026-03-12T14:17:14.952Z","repository":{"id":55818357,"uuid":"106525856","full_name":"Developmint/npm-stats-api","owner":"Developmint","description":"Fetch stats for your NPM packages","archived":false,"fork":false,"pushed_at":"2020-12-11T20:29:15.000Z","size":16,"stargazers_count":15,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-18T01:12:33.103Z","etag":null,"topics":["fetch-stats","npm","stats","stats-api"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Developmint.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-10-11T08:20:24.000Z","updated_at":"2021-07-21T19:56:55.000Z","dependencies_parsed_at":"2022-08-15T07:21:08.174Z","dependency_job_id":null,"html_url":"https://github.com/Developmint/npm-stats-api","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Developmint%2Fnpm-stats-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Developmint%2Fnpm-stats-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Developmint%2Fnpm-stats-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Developmint%2Fnpm-stats-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Developmint","download_url":"https://codeload.github.com/Developmint/npm-stats-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225096708,"owners_count":17420314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fetch-stats","npm","stats","stats-api"],"created_at":"2024-11-17T22:17:25.305Z","updated_at":"2026-03-12T14:17:14.906Z","avatar_url":"https://github.com/Developmint.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fetch stats for your NPM packages\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/developmint/npm-stats-api.svg?style=flat-square)](https://packagist.org/packages/developmint/npm-stats-api)\n[![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md)\n[![Build Status](https://img.shields.io/travis/Developmint/npm-stats-api/master.svg?style=flat-square)](https://travis-ci.org/Developmint/npm-stats-api)\n[![Quality Score](https://img.shields.io/scrutinizer/g/developmint/npm-stats-api.svg?style=flat-square)](https://scrutinizer-ci.com/g/developmint/npm-stats-api)\n[![Total Downloads](https://img.shields.io/packagist/dt/developmint/npm-stats-api.svg?style=flat-square)](https://packagist.org/packages/developmint/npm-stats-api)\n\nThis package makes it easy to retrieve stats for packages hosted on [npmjs.com](https://www.npmjs.com/)\n\nPS: It's heavily inspired by the [packagist-api package](https://github.com/spatie/packagist-api) made from Spatie\n## Installation\n\nYou can install the package via composer:\n\n``` bash\ncomposer require developmint/npm-stats-api\n```\n\n## Usage\n\nYou must pass a Guzzle client to the constructor of `Developmint\\NpmStats\\NpmStats`.\n\n``` php\n$client = new \\GuzzleHttp\\Client();\n\n$npmStats = new \\Developmint\\NpmStats\\NpmStats($client);\n```\n\n### Get stats for a package of your choice\n``` php\n$npmStats-\u003egetStats('jquery');\n```\n\n### Get stats with a period of your choice\n\nUse a constant provided by the NpmStats class to get stats for the last day, week, month, year or in total.\n``` php\n$npmStats-\u003egetStats('jquery', NpmStats::LAST_DAY);\n```\nYou can also pass in specific dates\n``` php\n$npmStats-\u003egetStats('jquery', '2017-01-01');\n```\nOr even ranges\n``` php\n$npmStats-\u003egetStats('jquery', '2014-02-07:2014-02-14');\n```\n\nThe output will be already decoded from json:\n\n``` php\narray(4) {\n  [\"downloads\"]=\u003e\n  int(198672)\n  [\"start\"]=\u003e\n  string(10) \"2017-10-10\"\n  [\"end\"]=\u003e\n  string(10) \"2017-10-10\"\n  [\"package\"]=\u003e\n  string(6) \"jquery\"\n}\n```\n\n### Get stats with a period of your choice as range\n\nYou can also get the stats as a *range*, means the downloads split up per day:\n``` php\n$npmStats-\u003egetStats('jquery', NpmStats::LAST_WEEK, true);\n```\n\nAnd this would be the result of that call:\n\n``` php\narray(4) {\n  [\"start\"]=\u003e\n  string(10) \"2017-10-04\"\n  [\"end\"]=\u003e\n  string(10) \"2017-10-10\"\n  [\"package\"]=\u003e\n  string(6) \"jquery\"\n  [\"downloads\"]=\u003e\n  array(7) {\n    [0]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(200678)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-04\"\n    }\n    [1]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(195593)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-05\"\n    }\n    [2]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(172132)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-06\"\n    }\n    [3]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(51068)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-07\"\n    }\n    [4]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(46892)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-08\"\n    }\n    [5]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(171920)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-09\"\n    }\n    [6]=\u003e\n    array(2) {\n      [\"downloads\"]=\u003e\n      int(198672)\n      [\"day\"]=\u003e\n      string(10) \"2017-10-10\"\n    }\n  }\n}\n```\n\n### Get bulk stats\n\nOf course you can retrieve up to 128 packages as a bulk query. Simply separate them with a command and you are good \nto go.\n\n``` php\n$npmStats-\u003egetStats('vue,express', NpmStats::LAST_WEEK);\n```\n\nBut beware! This only works in point mode, not in range mode.\n\n``` php\n$npmStats-\u003egetStats('vue,express', NpmStats::LAST_WEEK, true);\n//Won't work\n```\nAnyway, the output will look similar to the normal point mode output:\n\n``` php \narray(2) {\n  [\"vue\"]=\u003e\n  array(4) {\n    [\"downloads\"]=\u003e\n    int(3980980980098089080980983)\n    [\"package\"]=\u003e\n    string(5) \"vue\"\n    [\"start\"]=\u003e\n    string(10) \"2017-10-10\"\n    [\"end\"]=\u003e\n    string(10) \"2017-10-10\"\n  }\n  [\"express\"]=\u003e\n  array(4) {\n    [\"downloads\"]=\u003e\n    int(818264)\n    [\"package\"]=\u003e\n    string(7) \"express\"\n    [\"start\"]=\u003e\n    string(10) \"2017-10-10\"\n    [\"end\"]=\u003e\n    string(10) \"2017-10-10\"\n  }\n}\n```\n\n## More in-depth info about the NPM stats API\n\nYou can find a detailed explanation about how the stats API of NPM works in this\n[repository README file](https://github.com/npm/registry/blob/master/docs/download-counts.md)\n\n## Limits of the API\n\nThe official limits are:\n+ Bulk queries: 128 packages at a time and at most 365 days of data\n+ All other queries: limited to at most 18 months of data\n+ Earliest date available: January 10, 2015\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information what has changed recently.\n\n## Testing\n\n``` bash\n$ composer test\n```\n\n## Contributing\n\nPlease see [CONTRIBUTING](CONTRIBUTING.md) for details.\n\n## Security\n\nIf you discover any security related issues, please email support@developmint.de instead of using the issue tracker.\n\n## Credits\n\n- [Alexander Lichter](https://github.com/manniL)\n- [All Contributors](../../contributors)\n\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmint%2Fnpm-stats-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevelopmint%2Fnpm-stats-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevelopmint%2Fnpm-stats-api/lists"}