{"id":17677744,"url":"https://github.com/adamslack/firefox-add-on-scraper","last_synced_at":"2026-05-05T23:33:27.990Z","repository":{"id":57236746,"uuid":"419484941","full_name":"AdamSlack/firefox-add-on-scraper","owner":"AdamSlack","description":"Scraper for Firefox Add-ons written in Typescript","archived":false,"fork":false,"pushed_at":"2021-10-20T22:34:21.000Z","size":40,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-07T23:05:29.589Z","etag":null,"topics":["firefox","firefox-addon","hacktoberfest","nodejs","npm","npm-package","scraper","type","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AdamSlack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-20T20:47:12.000Z","updated_at":"2021-11-04T15:51:36.000Z","dependencies_parsed_at":"2022-08-26T15:10:10.877Z","dependency_job_id":null,"html_url":"https://github.com/AdamSlack/firefox-add-on-scraper","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdamSlack%2Ffirefox-add-on-scraper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdamSlack%2Ffirefox-add-on-scraper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdamSlack%2Ffirefox-add-on-scraper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AdamSlack%2Ffirefox-add-on-scraper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AdamSlack","download_url":"https://codeload.github.com/AdamSlack/firefox-add-on-scraper/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246358251,"owners_count":20764366,"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":["firefox","firefox-addon","hacktoberfest","nodejs","npm","npm-package","scraper","type","typescript"],"created_at":"2024-10-24T07:41:44.678Z","updated_at":"2026-05-05T23:33:27.938Z","avatar_url":"https://github.com/AdamSlack.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# firefox-add-on-scraper\n\n[![https://nodei.co/npm/firefox-add-on-scraper.png?downloads=true\u0026downloadRank=true\u0026stars=true](https://nodei.co/npm/firefox-add-on-scraper.png?downloads=true\u0026downloadRank=true\u0026stars=true)](https://www.npmjs.com/package/firefox-add-on-scraper)\n\nThis package is simple typescript package that makes it simple to search for, and download plugins from Firefox.\n\nTo begin using this in your project you can run `npm i --save firefox-add-on-scraper`\n\nThe package leverages the Mozilla Addons API to fetch data.\n\n## How to use\n\nThere are currently 3 methods available for you:\n\n1. search\n2. get\n3. download\n\nSearch is probably the most useful one here, but the ability to get the details should you know it's slug and then download it if you have its url is convenient.\n\nThis Repo also contains types for the `SearchResults` and a `SearchResult`. These can be seen in `./types.ts`\n\n## search\n\nSearching can be done without providing any params. You will just get whatever mozilla decides to give you. Alternatively you could provide, any combination of the following params:\n\n1. query\n2. pageNumber\n3. pageSize\n\nWhen passed a `query` string, mozilla will attempt to provide results that are most relevant to that string\n\nWhen there are multiple pages of results `pageNumber` will let you start at a particular page\n\nTo restrict the number of results per page, you can use `pageSize`\n\nThe following example will search for 'youtube downloader' addons, restricting the number of results to 3, and fetchthe first page:\n```ts\nimport { firefoxAddOnClient } from 'firefox-add-on-scraper'\nconst results = await firefoxAddOnClient.addOns.search({\n  query: 'youtube downloader',\n  pageNumber: 1,\n  pageSize: 3,\n})\n```\nIt is equivalent to using curl in the following way:\n```sh\ncurl \"https://addons.mozilla.org/api/v5/addons/search/?page_size=3\u0026page=1\u0026q=youtube%5Cdownloader\"\n```\n\n## get\n\nif you know the `slug` for the plugin you want to get, then you can fetch it directly using this method. it takes a single param, which is the `string`\n\nThe following example will fetch information for a plugin with the slug of `easy-youtube-video-download`\n```ts\nimport { firefoxAddOnClient } from 'firefox-add-on-scraper'\nconst result = await firefoxAddOnClient.addOns.get('easy-youtube-video-download');\n```\n\nIt is equivalent to using curl in the following way:\n```sh\ncurl https://addons.mozilla.org/api/v5/addons/addon/easy-youtube-video-download/\n```\n\n\n## download\n\nFor anyone wanting to programatically download a plugin, this CLI provides the `download` method. You provide the url of the plugin you wish to download, and it will do that for you.\n\nThis method takes 2 params, the `url` of the plugin, and the `outputPath` for where it should store the file.\n\nYou _could_ totally ignore this if you have the url for the file and fetch it however you please. This might give you more freedom on how you wish to store/use the data that was fetched.\n\nTo obtain the URL you may wish to use the search/get methdods of this client and inspect the response.\n\nThe following example will download one of the addons that was fetched in a previous example\n\n\n```ts\nimport { firefoxAddOnClient } from 'firefox-add-on-scraper'\nconst result = await firefoxAddOnClient.addOns.get('easy-youtube-video-download');\n\nconst url = result.current_version.file.url;\nconst outputPath = './some/path/to/somewhere.xpi'\n\nawait firefoxAddOnClient.download({ outputPath, url })\n```\nthe above example would be similar to using `wget`:\n```sh\nwget https://addons.mozilla.org/firefox/downloads/file/3851158/easy_youtube_video_downloader_express-17.4-an+fx.xpi\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamslack%2Ffirefox-add-on-scraper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamslack%2Ffirefox-add-on-scraper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamslack%2Ffirefox-add-on-scraper/lists"}