WordPress Plugins Scraper — Installs, Downloads & Reviews
Pricing
from $0.60 / 1,000 plugin records
WordPress Plugins Scraper — Installs, Downloads & Reviews
Scrape the WordPress.org plugin directory: 70+ fields per plugin (installs, 7/30-day downloads, ratings, support, last update, abandoned flag), daily download stats, reviews with developer replies, authors, and category snapshots with an opportunity score. No login. Errors never charged.
Pricing
from $0.60 / 1,000 plugin records
Rating
0.0
(0)
Developer
Oswaldo Carabano
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
WordPress Plugins Scraper — installs, downloads, reviews and opportunity scores
Extract the whole WordPress.org plugin directory (about 76,000 plugins) or any tag, search, author or list of plugins, with 70+ fields per plugin: active installs, all-time and 7/30-day downloads with growth, rating and star histogram, support threads and how many were resolved, last release, an abandoned flag, business model, tags, contributors, versions, FAQ and changelog. Add daily download series, reviews with the developer's reply, author portfolios and a category snapshot with a published opportunity score to find plugin ideas worth building.
No login, no API key, no browser. Error rows, duplicates and plugins your filters skip are never charged.
What you can extract
outputType | One row per | Highlights |
|---|---|---|
plugins (default) | plugin | 70+ fields; downloads yesterday / 7 d / 30 d / previous 30 d and 30-day growth included at no extra cost |
plugin-stats | plugin | daily downloads for up to 729 days, today / last week / all-time totals, share of sites on each version |
reviews | review | stars, title, full text, date, public author, replies, developer reply (role, text and delay in hours) |
category-snapshot | tag or search term | demand, ratings, staleness, new entrants, commercial share, opportunityScore, abandoned popular plugins, low-rated popular plugins |
authors | developer | every plugin they publish, summed installs and downloads, weighted rating, abandoned and commercial counts, member since |
Find plugin ideas worth building
- Abandoned plugins that many sites still run:
abandonedOnly: true+minActiveInstalls: 100000. Sites need a maintained replacement. - Popular plugins users dislike:
maxRating: 3.5+minNumRatings: 20+minActiveInstalls: 10000. Then pull their 1–2 starreviewsto read exactly what is missing. - Category gaps:
category-snapshotfor tags such aswoocommerce,booking,membership,paymentand compare their opportunity scores; each row lists the abandoned and low-rated popular plugins of that category. - Momentum: sort your export by
downloadsGrowth30dto see what is gaining installs now.
The opportunity score (published formula)
Every category-snapshot row carries opportunityScore (0–100) and its four components:
opportunityScore = 100 × (0.40 × demand + 0.25 × dissatisfaction + 0.20 × staleness + 0.15 × openness)
- demand = log10(1 + total active installs of the category) ÷
demandLogCap, capped at 1.demandLogCapis 8: 100 million summed active installs saturate demand. - dissatisfaction = share of rated plugins with a rating below 4.
- staleness = share of plugins without a release in more than 730 days.
- openness = 1 ÷ (1 +
populationCount÷ 50): fewer competitors, more room.populationCountis the size of the whole category as WordPress.org announces it (resultsAnnounced), so a big tag is not made to look open just because fewer plugins were analyzed (formula v1.1;opennessBasissayscategory, orsampleif the category size was unknown).
Which plugins are measured: a snapshot reads the category's listing most installed first (tags)
or most relevant first (searches) and aggregates up to maxPluginsPerCategory plugins
(default 1,000, up to 10,000). Demand, dissatisfaction and staleness are computed on those
pluginsAnalyzed; coverage = pluginsAnalyzed ÷ resultsAnnounced tells you how much of the
category that is. For big tags (the woocommerce tag announces 9,761 plugins) raise
maxPluginsPerCategory if you want the long tail in the shares; compare categories with similar
coverage.
It is deterministic: the same plugins give the same score in every run, so you can compare categories and track one over time. It is arithmetic on public data, not AI. Active installs are the lower bounds of the buckets WordPress.org publishes.
Input examples
Default input {}: the 20 most installed plugins with full records and 30-day downloads.
{ "tags": ["woocommerce"], "abandonedOnly": true, "minActiveInstalls": 10000, "maxItems": 50 }
{ "outputType": "category-snapshot", "tags": ["booking", "membership", "payment", "forms"] }
{ "outputType": "reviews", "pluginUrls": ["https://wordpress.org/plugins/wordpress-seo/"], "reviewsStars": ["1", "2"], "maxReviewsPerPlugin": 100 }
{ "outputType": "plugin-stats", "pluginUrls": ["akismet", "classic-editor"], "statsDays": 365 }
{ "browse": "all", "maxItems": 100000 }
Pasted plugin links are always delivered, whatever the filters. pluginUrls also accepts bare
slugs (wordpress-seo).
How each filter works (measured on 17 Oct 2026)
search,tags,authorsandbrowseare sent to WordPress.org. One listing per tag or term; a search term inside a tag narrows natively. WordPress.org ignores the author when a search term is present, so the actor applies the author itself (author or contributor).- A search returns the ~1,300 most relevant results (the term "seo" announces 8,644 and serves 1,271). Combine terms with tags to go deeper.
- The popular order repeats some plugins at page boundaries; the actor walks the listing again
with different page sizes and recovers them (the
woocommercetag goes from 77% to 99% of the 9,761 announced plugins).browse: "all"walks the whole directory in a stable order. - Installs, rating, number of ratings, dates, "tested up to", business model and abandoned are checked by the actor on each plugin of the listing, before any extra request. With any of them on, a run checks up to 100 plugins per requested row (at least 2,000); the status message shows how many were checked and skipped. Skipped plugins are never charged.
Output fields (plugin row)
Share of the whole directory with a value (n = 76,015 plugins, 17 Oct 2026):
| Field | Filled | Field | Filled |
|---|---|---|---|
| name, slug, url, version, short description | 100% | rating (plugins with ratings) | 40.9% |
| activeInstalls + bucket + upper bound | 100% | numRatings, ratings1–5 | 100% |
| downloaded (all time) | 100% | supportThreads, resolved, unresolved | 100% |
| lastUpdated, daysSinceUpdate, abandoned, added | 100% | testedUpTo | 98.4% |
| author / authorUsername / contributors | 99.6–100% | requiresWp | 96.9% |
| tags | 98.2% | requiresPhp | 59.0% |
| descriptionText | 99.8% | installationText | 90.3% |
| changelogText | 89.2% | faqText | 73.4% |
| versions | 81.1% | homepage | 74.7% |
| screenshots | 64.1% | bannerUrl | 44.2% |
| upgradeNotice | 39.2% | donateLink | 37.3% |
| requiresPlugins (dependencies) | 8.9% | blocks | 7.4% |
| businessModel (declared) | 1.2% | iconUrl, downloadLink, supportUrl | 100% |
Download fields (with includeDownloadStats, the default) were filled in 100% of 1,500 real
plugin rows; downloadsGrowth30d and downloadsPrev30d in 67% (plugins younger than 60 days have
no previous period). Non-empty fields per plugin row: 54.7 of 73 over the whole directory
without the download fields (n = 76,028, 17 Oct 2026); with them (the default) add 3 to 5; in 4,189
rows of 50 mixed test runs on Apify (popular plugins weigh more there) the average was 62.9.
Other row types (real rows, 17 Oct 2026)
| Row type | n | Average non-empty fields | Fields below 100% |
|---|---|---|---|
| plugin-stats | 300 | 27.9 of 29 | rating 90% (plugins without ratings) |
| review | 580 | 17.0 of 22 | developer reply 52% (reviews the developer answered), reviewer username / topic id / last activity 61% (filled when the review page is opened), participants 5% (review-list pages only) |
| author | 300 | 24.2 of 25 | contributor plugin count 27%, member since 99% |
| category-snapshot | 30 tags | 37.4 of 38 | abandoned popular plugins 53% and low-rated popular plugins 87% (empty when a category has none) |
Compared with other WordPress plugin actors on Apify
Read from each actor's published dataset schema and pricing through the Apify API on 17 Oct 2026 (31 actors that scrape the plugin directory; none had more than 2 users in 30 days):
| This actor | Best of the others | |
|---|---|---|
| Fields per plugin | 55–63 non-empty on average (73 keys; see the table above) | 32 declared (the richest schema) |
| 7/30-day downloads and growth | yes, by default | no one |
| Daily download history (up to 729 days) and version share | yes | no one |
| Category snapshot with a published opportunity score | yes | one actor has a per-plugin score without a published formula |
| Abandoned / low-rated popular plugins per category | yes | no one |
| Reviews with the developer's reply and its delay | yes | reply flag only, at $0.008 per topic |
Tag coverage when walking a whole tag (woocommerce, 9,761 plugins) | 99% (multi-pass) | single pass: ~77% |
| Price per plugin | $0.001 → $0.0006 by plan, $0.00001 start | $0.00115 → $0.00028 by plan, $0.005 start |
| Errors, duplicates, filtered rows | never charged | some charge every lookup attempt |
Missing values are always null, never omitted. Dates are ISO 8601 (UTC). Contact details
(emails, including obfuscated forms such as "name [at] domain.com" and emails inside links, and
phone numbers) are removed from names, descriptions, FAQ, changelog, upgrade notices, screenshot
captions and reviews, and no avatars are delivered.
Pricing (pay per event)
| Event | Price |
|---|---|
| Plugin record (primary) | $0.001 per plugin ($1.00 per 1,000), lower on higher Apify plans: $0.00078 Silver, $0.0006 Gold and above |
| Plugin download stats | $0.001 per plugin |
| Review | $0.0005 per review |
| Category snapshot | $0.003 per tag or search term |
| Author | $0.001 per author |
| Actor start | $0.00001 |
Never charged: error rows, duplicates within a run, plugins your filters skip, empty reviews,
categories or authors without plugins. Rows served from the cache cost the same and carry
cachedAt.
Speed and limits
Measured on Apify on 17 Oct 2026: the default input {} finishes in about 4 seconds; 15,000
plugins take about 80 seconds with 4 GB of memory; the whole directory (76,000 plugins) takes
about 35 minutes with the default 512 MB and a few minutes with 4 GB — for big exports, raise the
memory (the work is CPU-bound). Reviews go at about 1 request per second per connection.
WordPress.org limits requests per connection (about 15 per second on its API and about 1 per second on its review forum, measured). The actor paces itself, spreads the forum requests across connections and, when a connection is slowed down, moves to another one; it never solves a challenge and never logs in.
FAQ
Is the install count exact? No. WordPress.org only publishes buckets ("300,000+"). You get the lower bound, the label and the upper bound of the bucket.
How fresh is the data? By default a plugin record, download series or review that another run
read from WordPress.org in the last 6 hours (maxCacheAgeHours, up to 72) can be served from a
shared cache; those rows carry cachedAt (when it was read) and cost the same. Listings and the
rest are always read live. Set maxCacheAgeHours: 0 to read everything live. Download stats change
once a day.
Does it scrape themes? No, plugins only.
What happens when something fails? You get one error row explaining what failed and what to
do, the run stays green when the problem is the input, and nothing is charged for it. The ERRORS
record of the run lists them all.
This actor is independent and not affiliated with, endorsed or sponsored by WordPress.org, the WordPress Foundation or Automattic. It reads only public pages and public JSON endpoints.