GitHub Trending Scraper avatar

GitHub Trending Scraper

Pricing

from $2.00 / 1,000 result emitteds

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

from $2.00 / 1,000 result emitteds

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

3 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 rotation — curl-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.20One-off warm-up charge per run
result$0.002Per dataset item written

1 000 results ≈ $2.20. 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.