pub.dev Package Rankings & Score Change Monitor
Pricing
from $0.60 / 1,000 package results
pub.dev Package Rankings & Score Change Monitor
Export and monitor pub.dev package rankings for Dart and Flutter. Track downloads, likes and pub points with top-N snapshots and saved change history.
Pricing
from $0.60 / 1,000 package results
Rating
0.0
(0)
Developer
Vadim Bezrukov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Export pub.dev package rankings and track changes in Dart and Flutter package downloads, likes and pub points. Compare libraries you maintain, follow competing packages, or refresh a dashboard in Sheets, n8n or Make.
Start with the top 20 packages or supply a watchlist. A snapshot returns one observation per checked package, a query status and a run summary. Monitor mode stores and emits a baseline on the first successful run, then identifies rank, score and composition changes on later runs.
The source is the documented pub.dev JSON API. Rank is the package's position in pub.dev's completion list, not a local sort by downloads. Ranking data is cached for eight hours; this is not real-time data.
Get your first result
{"mode": "snapshot", "topN": 20}
With a healthy source containing at least 20 packages, this returns 20 package
observations marked BASELINE, one query_status and one run_summary.
Open the Packages Dataset view or export JSON/CSV. At FREE/BRONZE prices,
the example costs $0.02005. Set a maximum-charge budget of at least $0.021.
Choose a workflow
| Workflow | Input | Result |
|---|---|---|
| Export top pub.dev packages | snapshot, topN: 20 | Official rank, 30-day downloads, likes and pub points |
| Monitor rank and score changes | monitor, changesOnly, stable namespace | Baseline first; changed, exited and returning packages later |
| Compare named Dart or Flutter packages | watchlist: ["http", "uuid", "dio"] | Only the selected packages, with their full-list ranks |
Prepared saved examples cover these workflows with distinct inputs, Dataset views and spending limits. When available in the Actor's Examples section, copy an example and replace its sample values.
Monitor daily or weekly
{"mode": "monitor","outputMode": "changesOnly","stateNamespace": "top20","topN": 20}
Keep the same namespace and query on repeat runs. First-run BASELINE rows
are included with changesOnly. Later UNCHANGED packages are omitted; query
status and summary remain available. Snapshot mode does not read or write
monitoring history. Switching to monitor creates a new baseline.
Compare a watchlist
{"mode": "snapshot","watchlist": ["http", "uuid", "dio"],"includePackageMetadata": false}
Use up to 50 Dart package names or https://pub.dev/packages/{name} URLs.
Duplicate names are checked once. A watchlist ignores topN for filtering:
a package may rank above that number. An existing package outside the ranking
list has rank: null; the score endpoint determines NOT_FOUND separately.
To monitor this watchlist, choose monitor, changesOnly and a stable namespace.
Optional metadata adds description, homepage and latest version; those fields
do not trigger change alerts.
Output and change events
| Field | Meaning |
|---|---|
package, source_id, source_url | Package name, stable identity and source link |
rank | Official 1-based completion-list position; null when unranked or exited |
download_count_30d | Source-reported 30-day downloads; null when not calculated |
like_count, granted_points, max_points | Source-reported likes and pub points |
status, error | Verification status and structured failure code/message |
change_type, changed_fields, previous_values | Change relative to last-successful state |
scraped_at | UTC time of this check |
ranking_observed_at, ranking_cache_hit | Ranking fetch time and whether its cached list was reused |
schema_version, fingerprint, event_id | Schema version, semantic fingerprint and monitor event ID |
pub.dev does not provide native ranking history through these endpoints.
Your history begins with your first successful monitor. BASELINE does not
mean that the package was published that day. Rows are append-only observations.
NEW: first entry into the monitored composition after the baseline.UPDATED: downloads, likes, pub points or multiple tracked fields changed.RANK_UP/RANK_DOWN: only the rank changed.EXITED: a previously ranked package was absent in two successfully checked, separately fetched ranking lists. Reusing the same cache does not advance confirmation. This does not mean the package was unpublished.REAPPEARED: a previously exited package returned to the ranking window.UNCHANGED: no tracked field changed; omitted inchangesOnly.
Dataset views are Packages, Changes, Query checks and Run summary.
The raw Dataset includes package, query-status and run-summary records; filter
by record_type in integrations. RUN_SUMMARY is also stored in the default KVS.
Freshness and failures
The completion list is cached in an account-local Actor key-value store for at least eight hours, as requested by pub.dev. Snapshots and monitors share this cache. Scores are fetched on each check, so downloads or likes may change while ranks are reused. Prefer daily or weekly ranking monitoring.
An expired cache is not used to hide a failed refresh. Failed checks never replace good monitoring state or advance pending exits. Invalid score fields, malformed ranking lists, HTML challenges and exhausted retries are failures.
| Status | Meaning and next action |
|---|---|
SUCCESS | Consume the verified observation |
NOT_FOUND | Score endpoint returned a non-HTML 404; check the package name |
NO_RESULTS | Verified empty ranking for a top-N query; never a source failure |
PARTIAL | Inspect query diagnostics and per-package failures; state is unchanged |
FAILED | Inspect the source/protocol error; a fully failed query fails the run |
INVALID_INPUT | Correct input before retrying; no source request was made |
NOT_PROCESSED | Increase the run budget or request a smaller window |
An empty completion list does not skip watchlist score checks. Each failing
score request receives its own package status while other successful results
remain usable. snapshot plus changesOnly is rejected before fetching.
maxPackageRows bounds output. A window that does not fit is
PARTIAL / OUTPUT_LIMIT, never silently truncated. If a top-N window retains
under half its previous active packages, PARTIAL / MASS_REMOVAL keeps the
old state. Watchlists and top-1 are exempt from this guard.
Pricing and spending limits
The Pricing tab is authoritative. Platform usage is included, not added to the buyer's bill.
| Event | Charged for | FREE / BRONZE |
|---|---|---|
apify-actor-start | One start event at supported 256-1024 MB memory settings | $0.00005 |
package-result | Each successful snapshot package; in monitor, each delivered NEW, UPDATED, RANK_*, EXITED or REAPPEARED | $0.001 |
window-check | One complete monitor check, including baseline, no changes or verified empty ranking | $0.01 |
Package results cost $0.0008 on SILVER and $0.0006 on GOLD, PLATINUM
and DIAMOND. Start and window-check prices are the same across tiers.
Monitor BASELINE/UNCHANGED rows, NOT_FOUND, retries and failed or partial
windows do not incur package-result fees. Failed/partial windows do not incur
window-check fees. The platform start event still applies. There is no
additional automatic Dataset-item fee.
| Example at FREE/BRONZE prices | Expected bill | Suggested run budget |
|---|---|---|
| Snapshot of 3 successful watchlist packages | $0.00305 | $0.021 |
| Snapshot top-20 | $0.02005 | $0.021 or more |
| Snapshot top-200 | $0.20005 | $0.21 |
| First or unchanged top-20 monitor | $0.01005 | $0.05 |
| Top-20 monitor with 20 changed rows | $0.03005 | $0.05 |
| 30 daily unchanged monitor checks | $0.30150 | Budget applies separately to each run |
The minimum budget is $0.021, not a minimum charge. A $0.05 snapshot budget fits 49 successful packages, not 50, because the start event also counts. Saved examples allow $0.21 for top-N snapshots, $0.06 for watchlists and $0.50 for monitors. These ceilings cover their supported input ranges and are not automatically charged. A top-200 monitor may include up to 400 billable package rows with confirmed exits, for a maximum $0.41005 at FREE/BRONZE prices.
If the entire window cannot be delivered and charged within the remaining budget, monitoring state stays unchanged. After interrupted delivery, resurrection does not replay charges. Inspect the previous run's partial output and start a new run for a fresh observation.
Automate with n8n, Make or the Apify API
- Schedule the monitor input daily or weekly in Apify.
- Add an
ACTOR.RUN.SUCCEEDEDwebhook for your n8n or Make endpoint. - Read
resource.defaultDatasetIdfrom its payload, then retrieveGET https://api.apify.com/v2/datasets/{datasetId}/itemswith your own authorization header. - Check
query_statusandrun_summarybefore alerting on successfulpackage_observationrows with the desiredchange_typevalues. - Handle
ACTOR.RUN.FAILEDseparately so source outages reach your error path.
Schedules and webhooks are configured in your account. To run directly, send
input JSON to POST https://api.apify.com/v2/acts/automa-flow~pub-dev-package-rankings-monitor/runs
with your own authorization header. Never put tokens in shared inputs or URLs.
For authenticated agents, the direct MCP endpoint is
https://mcp.apify.com?tools=automa-flow/pub-dev-package-rankings-monitor.
Example: "Check my pub.dev top-20 monitor and return changed packages plus the
query status." Access depends on the Actor's publication/access state and your
account. MCP discovery and autonomous payment are separate; agentic payment
readiness is not claimed.
Scope and limitations
- Top-N is limited to 200; watchlists to 50. Completion-list membership is source-controlled and does not include every published Dart package.
- Use sequential runs per namespace. Concurrent monitor writers are unsupported.
- EXITED tombstones are retained for 180 days, at most 20,000 per query.
Returns after pruning may be
NEW. - Optional metadata does not trigger changes. Downloads do not establish package quality, security, unique users or production adoption.
- The public pub.dev API is free to call directly. This Actor adds Apify delivery, bounded batches, explicit statuses and saved monitoring state.
- This Actor is independent of pub.dev, Dart and Flutter. It uses public APIs,
collects no publisher emails and bypasses no access controls. HTML
packages?q=and undocumented/api/searchare not used.
For support, provide the run ID, package/query and error code, never your token.