GitHub Trending Scraper
Pricing
Pay per event
GitHub Trending Scraper
Scrape the live GitHub Trending page — by day, week, or month — and optionally filter by programming language. Returns repo slug, description, stars gained in the window, today's stars, language, and built-by avatars. No GitHub API required.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
🎯 What this scrapes
GitHub publishes a Trending page (https://github.com/trending) that's separate from the REST API. This Actor parses the page (and its language- and date-filtered variants) and emits one structured row per trending repo — rank, full_name, description, language, total stars, stars-in-window, forks, and the contributor avatars shown on the page.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Tech-trend dashboards — chart which languages are surging week-over-week.
- Newsletter automation — pull the top 10 Python trending repos every Friday into your newsletter.
- Investor scouting — surface early-stage open-source projects gaining stars before they hit Hacker News.
- Competitive intel — alert when a competitor's repo lands on Trending.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
since | string | no | 'daily' | Which trending bucket to scrape — today (daily), this week (weekly), or this month (monthly). |
language | string | no | '' | Programming language slug exactly as GitHub uses it (e.g. python, typescript, rust</code |
spokenLanguage | string | no | '' | Spoken language code (e.g. en, zh). Leave empty for all. |
maxResults | integer | no | 25 | GitHub Trending pages typically show 25 repos. Set to 0 for the whole page. |
proxyConfiguration | object | no | {'useApifyProxy': True} | Apify Proxy is helpful here — GitHub may throttle aggressive scraping. Datacenter is fine. |
Example input
{"since": "daily","language": "python","maxResults": 5,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
rank | integer | Position on the trending page (1-indexed). |
full_name | string | Full repo slug — owner/name. |
owner | string | Repository owner login. |
name | string | Repository name. |
html_url | string | Canonical GitHub URL. |
description | ['string', 'null'] | Repository tagline (as shown on Trending). |
language | ['string', 'null'] | Primary language label shown on the page. |
stars_total | integer | Total stars at scrape time. |
stars_in_window | integer | Stars gained in the selected window (today / this week / this month). |
forks | integer | Fork count. |
built_by | array | List of contributor avatar URLs shown next to the repo card. |
scraped_at | string | ISO-8601 UTC scrape timestamp. |
window | string | The selected window — daily, weekly, or monthly. |
Example output
{"rank": 1,"full_name": "psf/requests","owner": "psf","name": "requests","html_url": "https://github.com/psf/requests","description": "Python HTTP for Humans.","language": "Python","stars_total": 51800,"stars_in_window": 142,"forks": 9300,"built_by": [],"window": "daily"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.005 | One-off warm-up charge per run |
result | $0.002 | Per dataset item |
Example: 1 000 results at the rates above ≈ $2.00. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
GitHub may change the Trending page HTML — if you see empty rows, file an issue and we'll ship a parser patch within 24h. We do not scrape developer-trending (only repo-trending) in this Actor.
❓ FAQ
How current is the data?
GitHub recalculates Trending throughout the day. A run reflects the page exactly as a logged-out browser sees it at request time.
Why are some built_by lists empty?
GitHub only shows contributor avatars for some cards; we surface them where present.
Can I filter by topic?
Not in this Actor — the Trending page doesn't expose topic filters. Use the GitHub Repository Scraper for topic queries.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.