Tech Adoption Tracker — GitHub Stars & npm Downloads avatar

Tech Adoption Tracker — GitHub Stars & npm Downloads

Pricing

from $5.00 / 1,000 entity observations

Go to Apify Store
Tech Adoption Tracker — GitHub Stars & npm Downloads

Tech Adoption Tracker — GitHub Stars & npm Downloads

Track developer adoption of any repo, package or app: GitHub stars, forks, contributors and releases, npm and PyPI download trends, App Store, Google Play and Chrome ratings. One typed row per entity with the change since your last run. Dataset-only, MCP-ready.

Pricing

from $5.00 / 1,000 entity observations

Rating

0.0

(0)

Developer

inovaflow

inovaflow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

If you sell to developers, adoption comes before revenue. A competitor's SDK picks up 3,000 stars in a week, a new framework doubles its npm downloads, a rival app starts climbing the App Store chart. Each of these shows up in the adoption numbers weeks before it reaches a press release or a pricing page. Those numbers are spread across five different sites, each with its own format. None of them tell you what changed since you last looked.

This Actor puts them in one place. Give it repos, packages, apps, GitHub organizations or just a topic, and every run returns one typed row per entity with the current adoption metrics and the change since your previous run. Put it on a schedule and you have a developer-adoption feed that your agent, dashboard or warehouse can trend without any cleanup.


Who it is for

  • DevRel and PLG teams: track your own repos and packages next to your competitors' and see week-over-week momentum in one table.
  • AI and GTM agents: one call, no login, no key. Every row has the same keys and only raw numbers, so the agent does the reasoning and nothing has to be parsed.
  • Founders and product marketers: track which tools in your category are gaining stars and downloads, so you know who is actually winning.
  • VCs and analysts: discover the most-adopted projects in a topic (mcp, vector-database, llm) and track them run over run.
  • Sales teams selling to dev-tool companies: every row carries the owning company's domain, ready to join to your CRM.

What makes it different

Typical GitHub or npm scraperThis Actor
Coverageone platformGitHub, npm, PyPI, Apple App Store, Google Play, Chrome Web Store, in one run and one schema
Re-runsthe same snapshot againthe change since your last run for every metric, plus a new-release flag
First runa snapshotdownload trends from day one: this week, the previous week, and the difference
Companya repo owner loginthe owning company's domain, resolved conservatively and labelled with where it came from
Missing datazero, or silently absentnull, and unreadFields tells you whether it was not reported or not read this run
Keysnone needednone needed. An optional GitHub token only raises the rate limit

What you get per entity

Every row has the same shape. Metrics a platform does not report are null, never guessed and never zero.

// A real row: second run of a watch, a few minutes after the first
{
"canonicalId": "github:supabase/supabase",
"platform": "github",
"entityId": "supabase/supabase",
"name": "supabase",
"owner": "supabase",
"ownerType": "organization",
"companyDomain": "supabase.com",
"companyDomainSource": "github-org-website",
"url": "https://github.com/supabase/supabase",
"homepage": "https://supabase.com",
"language": "TypeScript",
"license": "Apache-2.0",
"lastActivityAt": "2026-09-26T06:50:31Z",
"metrics": {
"stars": 110771, "forks": 14969, "watchers": 753, "openIssues": 1085, "contributors": 2049,
"downloadsWeek": null, "rating": null /* … every metric key, null when it does not apply */
},
"deltas": { "stars": -1, "forks": 2, "watchers": 0, "openIssues": 0, "contributors": 0 /* … */ },
"deltaWindowHours": 0.05,
"latestRelease": {
"version": "v1.26.08",
"publishedAt": "2026-08-07T13:57:57Z",
"notesExcerpt": "Here’s everything that happened with Supabase in the last month: ## Supabase Select SF 2026 …",
"url": "https://github.com/supabase/supabase/releases/tag/v1.26.08"
},
"newReleaseSinceLastRun": false,
"isBaseline": false,
"previousObservedAt": "2026-09-26T08:32:28.074Z",
"firstSeenAt": "2026-09-26T08:32:28.074Z",
"observedAt": "2026-09-26T08:35:13.898Z",
"runsObserved": 2,
"discoveredVia": "github-org:supabase",
"unreadFields": [],
"watchId": "qa-mixed"
}

The metrics, by platform

PlatformMetrics filled
GitHub reposstars, forks, watchers, openIssues (GitHub counts open PRs here too), contributors, latest release with the maintainers' own notes
npm packagesdownloadsDay, downloadsWeek, downloadsPrevWeek, downloadsDelta (week over week), downloadsMonth (30 days), latest version and its publish date, linked repo
PyPI packagesthe same download windows (mirrors excluded), versionsCount, first and latest release dates, linked repo
Apple App Storerating, reviewCount, ratingCurrentVersion, reviewCountCurrentVersion, chartRank (US top 100 overall), categoryRank (US top 100 in its category), version and release notes
Google Playrating, reviewCount, installsMin (lower bound of the install bucket: 10B+ becomes 10000000000), last update
Chrome Web Storeusers, rating, reviewCount (as the store displays it, e.g. 43.1K), version, last update

deltas has the same keys as metrics: each metric now minus the same metric at the previous observation in this watch. Packages also have repository (e.g. github:vercel/ai), so you can join a package row to its repo row.

Company domain: conservative by design

companyDomain is only filled from a field the owner controls: the GitHub organization's website, the package's homepage, or the app developer's website. companyDomainSource says which one was used. Shared hosts (github.io, readthedocs, social profiles) and personal accounts stay null. A missing domain costs your agent one lookup. A wrong one sends outreach to the wrong company.


How to use it

Track a list. Paste repos, packages and apps into their fields, or mix them all in Anything else:

{
"githubRepos": ["vercel/next.js", "langchain-ai/langchain"],
"npmPackages": ["react", "@modelcontextprotocol/sdk"],
"pypiPackages": ["requests", "fastapi"]
}

Track a company's whole open-source footprint: "githubOrgs": ["supabase"] adds its most-starred public repos.

Discover a market: "topics": ["mcp"] or "keywords": ["ai agent framework"] adds the most-starred GitHub repos and the most-downloaded npm packages for each (narrow with language and minStars).

Add apps: App Store, Google Play and Chrome Web Store URLs or ids. Listing an app switches the app stores on.

Schedule it. Run it daily or weekly with the same input. The first run is the baseline (isBaseline: true, deltas null). Every run after that reports the change. The trend memory is keyed by the watch: leave watchId empty and it is derived from your list, or name it ("watchId": "competitor-sdks") to share one history across schedules or to start fresh.

Output views

  • All entities: the headline numbers and deltas for everything.
  • GitHub repos, npm & PyPI packages, Apps & extensions: one table per platform with every metric.
  • Run summary (OUTPUT record): counts, top star, download and rating gains, new releases since the last run, anything skipped with the reason, and the discovery report.

Good to know

  • No key needed. Without a token, GitHub allows about 60 requests an hour per IP, and a repo costs about 3. When that runs out the Actor moves to a fresh IP and keeps going. For hundreds of repos per run, add a GitHub token (no scopes needed). It lifts the limit to 5,000 an hour and is stored encrypted.
  • Renamed or moved repos follow the redirect. The row carries the new name, and renamedFrom has the one you gave.
  • Nothing is invented. A package younger than a week has a null weekly figure, not a zero. A repo without releases has latestRelease: null. If something could not be read this run (a rate limit or timeout), it is listed in unreadFields.
  • Skipped entities are free. Missing packages, removed apps and typos are listed in the run summary with the reason. They produce no row and no charge.
  • PyPI has no public search, so discovery covers GitHub and npm. PyPI packages are tracked by name.

Pricing

Pay per event: $0.005 per entity observation delivered to your dataset, plus the standard Actor start fee. An empty run is never charged per row. A daily watch of 50 repos and packages costs about $0.25 a day.

Use it from an AI agent (MCP)

The Actor is available through the Apify MCP server. An agent can call it with nothing more than {"npmPackages": ["zod"], "githubRepos": ["colinhacks/zod"]}, get typed rows back, and call it again tomorrow for the deltas.