WordPress Plugin Reviews Scraper & Support Monitor avatar

WordPress Plugin Reviews Scraper & Support Monitor

Pricing

from $8.00 / 1,000 review or support topics

Go to Apify Store
WordPress Plugin Reviews Scraper & Support Monitor

WordPress Plugin Reviews Scraper & Support Monitor

Scrape WordPress.org plugin reviews and support forum topics. Export ratings, review text, replies, and resolution status. Monitor new reviews, unanswered questions, and topic changes across multiple plugins. No WordPress login or API key required.

Pricing

from $8.00 / 1,000 review or support topics

Rating

0.0

(0)

Developer

coolinbex

coolinbex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Scrape WordPress.org plugin reviews and support forum topics into structured JSON, CSV, or Excel. Collect star ratings, review text, support questions, replies, and resolution status. Schedule the Actor to monitor new reviews and changes to previously observed topics.

Built for plugin developers, WordPress agencies, product researchers, and support teams. No WordPress account, API key, AI service, or paid enrichment API is required.

What you can do

  • Export reviews and support topics for up to 20 WordPress plugins in one run.
  • Find 1-star and 2-star reviews, unresolved support threads, and topics with no replies.
  • Filter by keywords, excluded phrases, and the last-activity date.
  • Include reply text and publicly displayed Plugin Author/Plugin Support badges.
  • Monitor newly observed topics, edited reviews, reply changes, and resolution changes.
  • Export source links, absolute UTC timestamps, and predictable fields for automation.

Quick start

Enter plugin slugs such as woocommerce or contact-form-7. Official plugin and support URLs also work. Select reviews, support topics, or both, then run the Actor.

{
"plugins": ["woocommerce", "contact-form-7"],
"sources": "both",
"maxTopicsPerSource": 25,
"maxTopicsTotal": 100
}

Results appear in the default dataset. The Run summary and coverage output explains how much was scanned, which limits were reached, and whether monitoring state was saved.

Monitor new reviews and support changes

Use a stable monitor name and schedule the same saved task:

{
"plugins": ["woocommerce"],
"sources": "both",
"mode": "monitor",
"monitorKey": "woocommerce-feedback",
"firstRun": "emit",
"maxTopicsPerSource": 50,
"maxTopicsTotal": 100
}

The first successful run establishes a baseline. With firstRun: "emit", it also exports the existing matching topics. Set firstRun: "silent" to establish the baseline without exporting existing items.

Later successful runs emit only newly observed or changed topics that match your filters. An unchanged run can legitimately return zero rows. Scrape mode always returns matching current snapshots and does not update monitor state.

changeTypeMeaning
snapshotMatching data from a scrape-mode run
baselineMatching data from the first successful monitor run
newFirst observed by this monitor; not necessarily newly published
updatedPreviously observed topic with a changed tracked field

Monitoring state persists in this Actor's own named Apify storage, within the account running it. Each monitor name has a separate lock. Coverage and filter settings are fingerprinted: changing those settings creates a separate baseline rather than silently mixing incompatible comparisons. Network tuning and the first-run display preference do not change that scope.

State tracks scanned topics even if they do not currently match your filters. For example, a 5-star review edited to 1 star can later enter your negative-review results as an update. Changes that no longer match the filters are not emitted.

Input reference

InputDefaultBehavior
pluginsRequired1–20 slugs or official WordPress.org plugin URLs
sourcesbothboth, reviews, or support
modescrapescrape or monitor
monitorKeydefaultStable monitor name; letters, numbers, _ and -
firstRunemitemit or silent baseline
maxTopicsPerSource50Topics examined per plugin and source, before filters
maxTopicsTotal500Total topics examined across the run, before filters
maxListingPages5Listing pages scanned per plugin/source
includeRepliestrueInclude public reply bodies
maxRepliesPerTopic50Reply bodies retained per topic, in source order
maxReplyPages3Maximum reply pages, including the first topic page
includePinnedTopicsfalseInclude sticky announcements
reviewStars[]Selected ratings as strings, e.g. ["1", "2"]; empty means all
supportStatusallall, unresolved, resolved, or no_replies
keywords[]Match any literal phrase in the original title/body
excludeKeywords[]Exclude any matching literal phrase in the original title/body
sinceEmptyFilter by last activity; YYYY-MM-DD or ISO timestamp with timezone
requestDelayMillis750Global minimum spacing between request starts; minimum 500 ms
requestTimeoutSecs30Timeout for each HTTP attempt
maxRetries3Retry count for temporary failures
maxRequests5000Hard HTTP request budget, including retries and redirects
proxyConfigurationDirect requestsOptional Apify/custom proxy settings

Keyword matching is case-insensitive and uses the original review or question. Replies are excluded from keyword filtering. Review-specific filters do not remove support topics, and support-specific filters do not remove reviews.

Example: negative plugin reviews

{
"plugins": ["woocommerce"],
"sources": "reviews",
"reviewStars": ["1", "2"],
"maxTopicsPerSource": 100
}

Example: support questions with no replies

{
"plugins": ["contact-form-7"],
"sources": "support",
"supportStatus": "no_replies",
"maxTopicsPerSource": 100
}

Output fields

Each dataset row represents a review or support topic. Replies are nested inside that row, not emitted as extra topic records.

FieldsContent
id, topicId, recordTypeStable topic identity; type is review or support
pluginSlug, pluginName, urlPlugin identity and WordPress topic source
title, body, author, authorUrlOriginal public post and author
rating1–5 for reviews; null for support topics
createdAt, lastActivityAt, observedAtAbsolute timestamps in UTC
supportStatusresolved, unresolved, unknown, or not_applicable
isClosed, isPinnedSeparate closed-thread and pinned-post signals
replyCount, participantCountCounts reported by the topic detail page
isNegativeReviewA review rated 1 or 2 stars
isUnansweredSupportA support topic with zero reported replies
hasPluginReplytrue when a collected reply has a plugin badge; false only when complete reply coverage finds none; otherwise null
repliesReply ID, author, public badge, timestamp, body, and truncation flag
repliesTruncated, replyPagesFetchedReply coverage information
contentTruncatedOriginal post exceeded the 50,000-character output cap
matchedKeywordsIncluded phrases found in the original title/body
changeType, changedFieldsMonitoring change category and changed field names
contentFingerprint, eventIdContent-version fingerprint and event identity

Public badges are evidence of a plugin role on that specific post. An unbadged user can still be associated with a plugin, so this is not identity verification. Individual reply bodies are capped at 20,000 characters and have their own contentTruncated flag. HTML is converted to text; scripts and login-only site-link placeholders are removed.

Coverage and failure behavior

This is a bounded monitor of the configured listing window. Increase listing/topic limits to cover more history. The Actor follows WordPress's listing order; it does not promise a full historical archive or detection of every old-topic edit. A topic outside the scanned window is not rechecked independently.

Limits apply before filters. Checking 100 topics with a 1-star filter may produce fewer than 100 results. Earlier plugins are processed first, with reviews before support in both mode. The run summary explicitly reports skipped or capped sources. Pinned topics are excluded by default.

Missing topics are never interpreted as deleted, and missing resolution markers remain unknown. A closed thread is not automatically resolved. A thread with a reply is not necessarily solved.

Network failures, blocking pages, missing topics, and source markup changes are reported as errors rather than converted into empty successful results. When a source fails, valid partial rows remain available, the run fails visibly, and the previous monitor baseline is preserved.

Overlapping cloud runs using the same monitor name are rejected while the existing run holds its server-side lock. Locks are renewed while working and released when finished. After a forced termination, allow up to 10 minutes for the cloud lock to expire.

Interrupted, failed, or spending-limited runs can leave partial results. Retrying can repeat those rows; downstream consumers should deduplicate using id and contentFingerprint. This Actor does not claim exactly-once delivery. It retains up to 25,000 topic fingerprints per configuration; choose a fresh monitor name when intentionally starting a new tracking history.

Pricing and integrations

When the owner enables pay-per-event pricing, one topic event is charged for each emitted dataset row. Nested replies do not create additional topic events. Filtered-out and unchanged topics do not produce this event; platform/run charges can still apply according to the active pricing configuration. Check the Pricing tab before running.

Apify's dataset exports support JSON, CSV, and Excel. Use JSON when you need nested replies. Schedule a saved task or connect run results to your own workflow through Apify's API or integrations. The Actor itself does not send emails, Slack messages, or WordPress replies.

FAQ

Does it scrape reviews on individual WooCommerce stores? No. It collects plugin feedback from the public WordPress.org directory and support forums.

Does it support premium-only plugins, themes, or private tickets? No. A plugin must have an accessible WordPress.org support/review area. Themes and private support systems are outside this Actor's scope.

Do I need a proxy? It is optional. Direct access is the default. WordPress may rate-limit or block particular runtime IPs; configure a proxy if needed. No fixed-IP or permanent-access guarantee is made.

Why did my monitor export zero rows? It may be a silent baseline, nothing may have changed, or no scanned topics may match. Inspect SUMMARY to distinguish these cases from errors.

Can it identify recurring complaints using AI? It provides searchable text and keyword filters. It does not invent sentiment, diagnoses, or AI summaries.

This is an independent community Actor and is not affiliated with or endorsed by WordPress.org.

Development

The project uses Node.js 24, TypeScript, the Apify SDK, Cheerio, and Zod. See DEPLOY.md for exact local-run, deployment, pricing, and release steps. See VALIDATION.md for the checks actually performed and the remaining cloud validation.