Developer tools · News & feeds
GitHub Trending Scraper
GitHub's REST API has no trending endpoint — the Trending page is the only source, and it is HTML. This Actor parses github.com/trending for the daily, weekly or monthly window with optional programming-language and spoken-language filters, and returns typed rows: rank, owner/name slug, URL, description, language, total stars, stars gained inside the selected window, forks and contributor avatars. No GitHub token required.
Free Apify credit covers a first run. No credit card to try.
What this Actor scrapes
GitHub publishes a Trending page (github.com/trending) separate from the REST API. Because there is no official github trending API, the only reliable way to pull structured trending-repo data is page parsing. This Actor fetches the page — and its language- and date-filtered variants — and emits one structured row per trending repository. Supported windows: daily, weekly, monthly. Supported filters: programming language, spoken language.
Fields returned per row: rank, owner/name slug, canonical URL, description, primary language, total star count, stars gained in the selected window, fork count, contributor avatar URLs, scrape timestamp, and window label.
What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffireplays real Chrome, Firefox, and Safari TLS handshakes so the target sees a browser, not a Python script. We rotate impersonation profiles across requests. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block or rate-limit response.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterheader honoured. - 🧱 Rate-limit-aware pacing — we back off and slow down instead of hammering through a block and getting the IP burned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable field names, ready for JSON / CSV / Excel export from Apify Console or via the API.
- 💰 Pay-Per-Event pricing — you pay only for rows that land in your dataset. No data, no charge.
Use cases
- Tech-trend dashboards — chart which languages or ecosystems are surging week-over-week; visualize star velocity over time.
- Newsletter automation — pull the top 10 Python trending repos every Friday and pipe them directly into your newsletter or Slack digest.
- Investor and analyst scouting — surface early-stage open-source projects gaining stars before they hit Hacker News or the tech press.
- Competitive intelligence — set up an alert when a competitor's repository lands on Trending; track star-gain velocity relative to your own projects.
- AI agent data feeds — give your briefing bot a live "what's hot in OSS" signal without building your own scraper or worrying about selector drift.
Input
Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.
| Field | Type | Required | What it does |
|---|---|---|---|
since | string | no | 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, cpp). Leave empty for all languages. |
spokenLanguage | string | no | Spoken language code (e.g. en, zh). Leave empty for all. |
maxResults | integer | no | GitHub Trending pages typically show 25 repos. Set to 0 for the whole page. |
{
"since": "daily",
"language": "python",
"maxResults": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
} Output
One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.
rankfull_nameownernamehtml_urldescriptionlanguagestars_totalstars_in_windowforksbuilt_bywindowscraped_at
{
"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": [],
"scraped_at": "2026-06-01T08:00:00Z",
"window": "daily"
} Pricing
| Event | Price | When |
|---|---|---|
| Actor start | $0.20 | Once per run, covers warm-up and proxy session setup. |
| Result emitted | $0.0020 | Per result written to the dataset. |
You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.
Limitations
- GitHub may change Trending page HTML at any time. If you see empty rows or missing fields, open an issue on the Actor's Issues tab and we'll ship a parser patch within 24 hours.
- This Actor scrapes repo-trending only. Developer-trending (the "trending developers" tab) is not included.
- Trending updates approximately every 6 hours on GitHub's side; a run reflects the page as a logged-out browser sees it at that moment — not a real-time feed.
- GitHub Trending shows roughly 25 repositories per language/window combination. Running multiple language passes in separate runs is the intended pattern for broad market-scan use cases.
FAQ
Is there an official GitHub Trending API?
github.com/trending. That is exactly what this Actor parses — so our output is the closest thing to a github trending API available today.How current is the data?
Can I get github trending Python repos specifically?
language to python (or any other language slug GitHub uses). You can combine it with any since window. The same approach works for TypeScript, Rust, Go, C++, and every other language listed on GitHub.Can I get an RSS feed or subscribe to updates?
Why are some `built_by` arrays empty?
Can I filter by topic?
Ready to run it?
Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.
Related Actors