Dev Trend Radar
Pricing
from $250.00 / 1,000 scan runs
Dev Trend Radar
Track which developer topics are gaining momentum across GitHub, Stack Overflow, and npm. Get a weekly ranked trend score with week-over-week change.
Pricing
from $250.00 / 1,000 scan runs
Rating
0.0
(0)
Developer
Aaron
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Track which developer topics are gaining momentum across GitHub, Stack Overflow, and npm. Get a weekly ranked trend report with a single normalized score per topic.
What is Dev Trend Radar?
Dev Trend Radar takes a list of tech topics and checks three public developer ecosystems for each one:
- GitHub - how many repositories use the topic and how many stars the top repos have
- Stack Overflow - how many questions carry the matching tag
- npm - how many packages match the keyword and their monthly download counts
It combines those three signals into a single trend score for each topic, then ranks your topics from strongest to weakest. The score is normalized, so topics are compared on the same scale instead of raw numbers. The Actor also saves a weekly snapshot so you can see week-over-week change on later runs.
It runs without a browser, without proxies, and finishes in seconds. No runtime AI, no scraping behind logins, no CAPTCHAs to deal with.
What is it for?
- Dev tool product managers who want to see which categories are heating up before competitors notice
- VC and market analysts who track developer ecosystems and category growth for investment research
- OSS sponsorship platforms that look for communities with rising activity to support
Why not just check each site yourself?
You can. But checking GitHub, Stack Overflow, and npm separately for 30 topics every week takes hours and the numbers are not directly comparable. Dev Trend Radar does all three in one run, normalizes the scores, ranks the topics, and tracks the change over time automatically.
Input
Paste a list of topics, then optionally adjust the settings.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
topics | array of strings | yes | - | 1 to 100 tech topics in lowercase kebab-case (e.g. vector-database, rust-web-frameworks) |
schedule | string | no | weekly | How the run is bucketed for snapshots. Options: weekly, daily |
growthWindowWeeks | integer | no | 4 | How many weeks back to compare for week-over-week change |
maxTopics | integer | no | 100 | Cap on topics processed after dedup |
stackExchangeSite | string | no | stackoverflow | Which Stack Exchange site to query |
Example input
{"topics": ["vector-database","web-scraping","htmx","drizzle-orm","rust-web-frameworks"],"schedule": "weekly","growthWindowWeeks": 4,"maxTopics": 30,"stackExchangeSite": "stackoverflow"}
GitHub rate limits
The free GitHub API allows 10 searches per minute without a token. For runs with more than 30 topics, create a free GitHub personal access token and set it as the GITHUB_TOKEN environment variable in your Actor settings. This raises the limit to 30 per minute. Without a token, the Actor still works but runs slower for large topic lists.
Output
Each topic produces one row in the dataset. The Actor also writes a summary object to the key-value store.
Example dataset row
{"topic": "vector-database","github": {"repoCount": 6634,"starSumTopN": 583247,"topNRepos": 25,"retrievedAt": "2026-07-22T16:39:00Z"},"stackOverflow": {"tagCount": 328,"growthDelta": null,"tagAbsent": false,"retrievedAt": "2026-07-22T16:39:00Z"},"npm": {"packageCount": 465,"downloadSum": 3817785,"retrievedAt": "2026-07-22T16:39:00Z"},"compositeScore": 0.077,"rank": 2,"weekOverWeekDelta": null,"flags": [],"retrievedAt": "2026-07-22T16:39:00Z","snapshotWeek": "2026-W30"}
Summary object (OUTPUT key in key-value store)
{"radar": [{ "topic": "web-scraping", "compositeScore": 1.846, "rank": 1, "weekOverWeekDelta": null },{ "topic": "vector-database", "compositeScore": 0.077, "rank": 2, "weekOverWeekDelta": null }],"meta": {"snapshotWeek": "2026-W30","processedTopics": 5,"skippedTopics": [],"invalidTopics": [],"degradedSources": [],"githubRateLimited": false,"priorSnapshotExisted": false,"actorVersion": "0.1.0"}}
What the fields mean
compositeScore- The combined trend score. Higher means more activity across all three sources relative to the other topics in your list.rank- Position after sorting by score. Rank 1 is the strongest.weekOverWeekDelta- How much the score changed since the prior snapshot. Null on the first run because there is no baseline yet.flags- Status indicators. Common flags:github-rate-limited- GitHub returned a rate limit error (add a token to fix)so-tag-absent- The topic has no matching tag on Stack Overflow (this is signal, not an error)npm-partial-downloads- Some npm download fetches failed but the rest succeededall-sources-degraded- All three sources failed for this topic (row still emitted with zeros)
If a source is unavailable, the Actor returns a row with zeros and a flag explaining what happened. You always get partial results instead of a failed run.
Pricing
This Actor uses pay per event pricing.
| Event | Price | When it fires |
|---|---|---|
radar-scan | $0.25 | Once per run. Covers up to 30 topics. |
extra-topic | $0.01 | Once per topic beyond 30. |
apify-actor-start | ~$0.00005 | Once per run. Apify covers the first 5 seconds of compute. |
Example costs
| Topics per run | Cost per run | Monthly cost (weekly runs) |
|---|---|---|
| 10 | $0.25 | ~$1.00 |
| 30 | $0.25 | ~$1.00 |
| 50 | $0.45 | ~$1.80 |
| 100 | $0.95 | ~$3.80 |
You pay for the ranked cross-source insight, not per API call. The compute cost is under one cent per run.
How to use
Option 1: Apify Console
- Open the Actor in Apify Console.
- Paste your topic list into the topics field.
- Click Start.
- Read the results in the Output tab.
Option 2: API
cURL:
curl -X POST "https://api.apify.com/v2/acts/heartsome_stalactite~dev-trend-radar/runs?token=YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"topics":["vector-database","web-scraping","htmx"]}'
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('heartsome_stalactite/dev-trend-radar').call({topics: ['vector-database', 'web-scraping', 'htmx'],});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python:
from apify_client import ApifyClientclient = ApifyClient('YOUR_API_TOKEN')run = client.actor('heartsome_stalactite/dev-trend-radar').call(run_input={'topics': ['vector-database', 'web-scraping', 'htmx'],})dataset = client.dataset(run.default_dataset_id).list_items()for item in dataset.items:print(item['topic'], item['compositeScore'])
Option 3: Schedule weekly runs
Set a weekly schedule in Apify Console with the same input. The Actor saves snapshots by week, so your second run will show week-over-week deltas automatically.
Limitations
- PyPI is not supported. Python's package registry does not offer a keyword search API, so only npm is used for package data.
- GitHub unauthenticated limit is 10 searches per minute. For more than 30 topics, set a
GITHUB_TOKENenvironment variable. A free token takes 10 seconds to create. - Stack Exchange allows 300 requests per day per IP. This is enough for most use cases but shared infrastructure may hit the limit under heavy concurrent usage.
- First run has no deltas. The
weekOverWeekDeltafield is null on the first run because there is no prior snapshot. Run it again the next week to see change. - A topic absent from one source is valid signal, not an error. If a topic has 0 npm packages, that means it has not been packaged yet. The Actor reports this as data.
Troubleshooting
My GitHub results are all zeros
You likely hit the rate limit without a token. Create a free GitHub personal access token and add it as the GITHUB_TOKEN environment variable in your Actor settings, then rerun.
A Stack Overflow tag is showing as absent
This is expected. It means the topic has no questions on that site yet. The Actor returns tagCount: 0 and tagAbsent: true. This is useful signal, not a bug.
My week-over-week deltas are null
This happens on the first run. The Actor needs one prior weekly snapshot to compare against. Run it again the following week and you will see the change.
Changelog
See ./CHANGELOG.md for version history.