GitHub Marketplace Scraper
Pricing
from $2.99 / 1,000 marketplace listings
GitHub Marketplace Scraper
Extract public GitHub Marketplace listings, types, descriptions, links, and logos.
Pricing
from $2.99 / 1,000 marketplace listings
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Collect public GitHub Marketplace listings from the rendered Marketplace pages. The Actor extracts the listing slug, name, canonical URL, card description, displayed type, public logo URL, and optional detail-page description. It supports bounded query/category URLs and public Marketplace pagination.
Source behavior
The public Marketplace page exposes a search/filter surface, Apps and Actions categories, listing cards with names, types, descriptions and logos, and page controls. The observed Apps page returned cards such as Render, LovableBot, GitGuardian, OpenCode, Google Cloud Build and CircleCI, and exposed page links through page 71. The Actor follows the public page query parameter for bounded pages; it does not access private listings, require a GitHub token, bypass CAPTCHA/challenge pages, or use undocumented APIs.
Input
{"query": "slack","listingType": "apps","maxItems": 20,"maxPages": 2,"includeDetails": false,"timeoutSecs": 30}
Use startUrls for one or more public https://github.com/marketplace URLs. If omitted, the Actor builds a URL from query and listingType (all, apps, actions, or packages). maxItems is capped at 200 and maxPages at 20 per start URL. includeDetails makes one bounded public detail request per selected listing. Timeouts are capped at 120 seconds. Unknown input keys are rejected.
Dataset output
Normal rows contain listingSlug, name, canonical Marketplace url, card description, listingType, optional detailDescription, public logoUrl, the discovery sourceUrl, and scrapedAt. These are source-backed listing fields. Internal record IDs/types, status/data flags, source-website markers, HTTP status fields, and diagnostic messages are not emitted in normal rows.
When GitHub returns a challenge page, no listing cards, or a failed detail/list request, an optional minimal diagnostic row contains only url, error, errorCode, and scrapedAt. OUTPUT_SUMMARY retains source URLs, normal record count, diagnostics, request count, failed request count, page count, data availability, and completion time.
Listing example
{"listingSlug": "render","name": "Render","url": "https://github.com/marketplace/render","description": "Continuous integration and deploys with Render, the modern cloud for ambitious developers","listingType": "App","logoUrl": "https://avatars.githubusercontent.com/ml/4937?s=400&v=4","sourceUrl": "https://github.com/marketplace?type=apps&page=1","scrapedAt": "2026-08-24T00:00:00.000Z"}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Local run
npm cinpm run checknpm testapify validate-schemaapify run --purge --input-file input.jsonnpm run validate
Keep page and detail bounds reasonable, respect GitHub terms, and treat challenge or empty responses as honest source outcomes.