GitHub Trending Scraper avatar

GitHub Trending Scraper

Pricing

Pay per event

Go to Apify Store
GitHub Trending Scraper

GitHub Trending Scraper

Scrape the live GitHub Trending page by day, week, or month with an optional language filter — repo slug, description, stars gained in the window, today's stars, language, built-by avatars — export to JSON or CSV. A GitHub trending API with no GitHub token required.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

12 days ago

Last modified

Share


🎯 What this 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 rotationcurl-cffi replays 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-After header 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.

⚙️ How to use it

  1. Click Try for free at the top of the Apify Store page.
  2. Fill in the input form — since, language, and maxResults all have sensible defaults.
  3. Click Start. Output streams into the run's dataset in real time.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the Apify dataset API.

To schedule recurring runs (e.g., daily OSS digest), use Schedules in the Apify Console and point it at this Actor with your preferred inputs.

📥 Input

FieldTypeRequiredDefaultNotes
sincestringno"daily"Which trending window to scrape — daily (today), weekly (this week), or monthly (this month).
languagestringno""Programming language slug as GitHub uses it — e.g. python, typescript, rust, cpp. Leave blank for all languages.
spokenLanguagestringno""Spoken-language code, e.g. en, zh. Leave blank for all.
maxResultsintegerno25GitHub Trending pages typically list 25 repos. Set to 0 to return the full page.
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy settings. Datacenter proxies are sufficient for most runs; residential may be needed under heavy throttling.
{
"since": "daily",
"language": "python",
"maxResults": 5,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

One dataset item per trending repository.

FieldTypeNotes
rankintegerPosition on the Trending page (1-indexed).
full_namestringFull repo slug — owner/name.
ownerstringRepository owner login.
namestringRepository name.
html_urlstringCanonical GitHub URL.
descriptionstring | nullRepository tagline as shown on the Trending page.
languagestring | nullPrimary language label shown on the card.
stars_totalintegerTotal stars at scrape time.
stars_in_windowintegerStars gained in the selected window (daily / weekly / monthly).
forksintegerFork count.
built_byarrayContributor avatar URLs shown next to the repo card (may be empty).
scraped_atstringISO-8601 UTC timestamp of the scrape.
windowstringThe 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": [],
"scraped_at": "2026-06-01T08:00:00Z",
"window": "daily"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.005One-off warm-up charge per run
result$0.002Per dataset item written

1 000 results ≈ $2.00. No subscription, no minimum spend, no card required to start — every new Apify account gets $5 of free credit.

🚧 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?

No. GitHub deprecated any unofficial trending endpoint years ago and has never shipped a public github trending API. The only reliable source is the HTML page at 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?

GitHub recalculates Trending roughly every 6 hours. A run reflects the page exactly as a logged-out browser sees it at request time — typically within 6 hours of the last GitHub recalculation.

Can I get github trending Python repos specifically?

Yes — set 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?

Not natively from this Actor, but you can schedule it on a Apify Cron schedule and use the Apify API to fetch the latest dataset. If github trending rss is your goal, a simple scheduled run + webhook to a feed-builder service is the recommended pattern.

Why are some built_by arrays empty?

GitHub only shows contributor avatars on some repo cards. We return what the page surfaces; if GitHub doesn't include them, neither do we.

Can I filter by topic?

Not in this Actor — the GitHub Trending page does not expose topic filters. For topic-based queries, use a GitHub REST API wrapper instead.

💬 Your feedback

Spotted a parsing bug, hit a selector-drift issue, or need a new field? Open an issue on the Actor's Issues tab in Apify Console — we ship fixes weekly and read every report.