TrustMate.io - Company Reviews, Ratings & Authors avatar

TrustMate.io - Company Reviews, Ratings & Authors

Pricing

from $1.20 / 1,000 review scrapeds

Go to Apify Store
TrustMate.io - Company Reviews, Ratings & Authors

TrustMate.io - Company Reviews, Ratings & Authors

Scrape complete company review histories from TrustMate.io. Paste company profile URLs, slugs, or domains, with support for both Polish `/opinie/` and English `/reviews/` profiles. Extract one row per review, including rating, full review text, author, date, and company details.

Pricing

from $1.20 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

TrustMate.io Scraper: Full Company Review Histories, Ratings and Replies

TrustMate.io Scraper turns TrustMate.io into a clean company-review data feed. Paste company profile links (Polish /opinie/ or English /en/reviews/), bare slugs, or bare domains, and get one row per review: the star rating, the full review text, the reviewer's name, the publish date, the company's reply and how fast it came, a verified flag, helpful and unhelpful vote counts, and machine translations, plus company-level context (rating distribution, response rate, category, certificates) attached to every row. It walks the entire review history for each company, not just the first page the site renders, and can enrich each row, resume an interrupted run, or monitor a scope on a schedule. Export to JSON, CSV or Excel, or pull results straight into your app through the API.

Why This Scraper?

  • Full review history, not just page one. Offset-paginates every page of a company's review feed until it reaches the natural end, instead of stopping at the first batch the site renders.
  • Paste any link shape. Polish profile links, English profile links, bare slugs or bare domains all resolve to the same review feed, in either input mode.
  • Rating filter and sort, identically in both modes. Narrow to a minimum star rating and choose a sort order; both apply the same way whether you paste companies or profile links.
  • Company reply and response time on every row. See how each company responded to its reviewers, with the reply timestamp and the response gap in hours.
  • Company context on every row. Rating distribution, response rate, recommend percentage, category and certificates, attached to every review of that company.
  • Resume and Incremental mode for recurring monitoring. Continue one interrupted run, or schedule the actor and get only new, updated, reappeared or expired reviews since the last run.
  • Optional profile-page enrichment. Attach schema.org profile data, social links, logo and meta descriptions to every row of a company, billed only when that page actually yields extra data.

Use Cases

  • Reputation monitoring teams: track new reviews and company replies for your own brand or a client's, on a recurring schedule.
  • Competitive research: compare rating distributions, response rates and recommend percentages across several companies in one run.
  • Customer experience analysis: mine full review text and response times to spot recurring complaints or praise.
  • Agencies and consultants: audit a prospect's review history and reply behavior before pitching a reputation-management engagement.

Data You Get

Sample shape: values are illustrative placeholders, not from a real reviewer or company.

FieldExample
platform"trustmate"
reviewId20481093
reviewPublicId"3f1a9c2e-71b4-4a08-9d3e-000000000001"
rating5
reviewBody"The order arrived a day earlier than expected and everything was carefully packaged."
authorName / authorType"Anna N." / "person"
reviewDate / reviewUpdatedAt"2025-11-03T09:14:22+00:00" / "2025-11-03T09:14:22+00:00"
language"pl"
verified / notVerifiedtrue / false
companyReply / companyReplyDate"Thank you for the kind words! We are glad the delivery went smoothly." / "2025-11-03T18:40:05+00:00"
companyResponseTimeHours9.43
helpfulCount / unhelpfulCount4 / 0
translations[{ "language": "en", "body": "Machine translation of the review body." }]
pinned / imported / importSourcefalse / false / null
orderIdentifier / orderNumber / isOrderLinked"ORD-88213" / null / true
reviewStatus / reviewEnabled1 / true
companyName / companySlug"Sample Home and Garden Co." / "sample-home-garden-co"
companyWebsite / companyCategory"https://sample-home-garden-co.example" / "Home and Garden"
companyRatingAvg / companyRatingDistribution4.6 / { "1": 12, "2": 4, "3": 9, "4": 58, "5": 312 }
companyServiceReviewCount / companyCombinedReviewCount395 / 410
companyResponseRate / companyRecommendPercentage92 / 88
companyCertificates[]
sourceUrl"https://trustmate.io/opinie/sample-home-garden-co"
scrapedAt"2025-11-05T02:00:00Z"

Company rows also carry the account id, verification flag, email, tax id, language, subtype, logo URL, description, phone, address and social links where TrustMate exposes them publicly. When fetchDetails is on, every row for that company additionally carries companyJsonLd, companySameAs, companyLogo, companyAggregateRating, companyMetaDescription and companyOgDescription, parsed from the company's public profile page (only the fields that page actually exposes are added). In Incremental mode every row also carries changeType (NEW / UPDATED / UNCHANGED / REAPPEARED / EXPIRED), changedFields, firstSeenAt and lastSeenAt.

How to Use

  1. Pick a mode: search (paste companies) or urls (paste profile links). Both accept the same URL, slug or domain shapes.
  2. Paste one or more company profile URLs, bare slugs or domains, and optionally set Minimum rating and Sort reviews by.
  3. Set Max items (and optionally Max review pages per company) to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search mode, a single company, default filters:

{
"mode": "search",
"companyUrls": ["https://trustmate.io/opinie/trustmate-io"],
"minRating": "1",
"sortBy": "newest",
"maxItems": 50
}

URL mode, paste a profile link, five-star reviews only:

{
"mode": "urls",
"startUrls": [
"https://trustmate.io/opinie/trustmate-io"
],
"minRating": "5",
"sortBy": "ratingDesc",
"maxItems": 100
}

With profile-page enrichment on:

{
"mode": "search",
"companyUrls": ["https://trustmate.io/opinie/trustmate-io"],
"fetchDetails": true,
"maxItems": 20
}

Recurring monitoring with Incremental mode:

{
"mode": "search",
"companyUrls": ["https://trustmate.io/opinie/trustmate-io"],
"incrementalMode": true,
"stateKey": "trustmate-io-weekly",
"emitExpired": true,
"maxItems": 500
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/trustmate-io-reviews-scraper").call(run_input={
"mode": "search",
"companyUrls": ["https://trustmate.io/opinie/trustmate-io"],
"maxItems": 50,
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["rating"], review["authorName"], review["reviewBody"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/trustmate-io-reviews-scraper').call({
mode: 'search',
companyUrls: ['https://trustmate.io/opinie/trustmate-io'],
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How Max items and Max review pages interact

Max items is the one true cap: the run stops as soon as this many review rows have been pushed, across every company. Max review pages per company is an optional, separate cap on how many pages (about 100 reviews each) are fetched per company before that company's walk stops, regardless of Max items. Leave it at 0 for no page limit and let Max items alone decide when to stop.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and every review already collected there is skipped, so you don't pay twice. The walk still pages forward in the same order as before, skipping already-seen reviews one by one, so it keeps reaching new ones as it advances; a low Max review pages per company, however, is a hard cap on pages fetched and can still stop the walk before it reaches genuinely new reviews if the previously collected ones filled those early pages.
  • Incremental mode (incrementalMode) is for scheduled runs over the same companies. Each review is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED. A review is only ever marked "gone" by a run that reaches the natural end of every tracked company's feed with emitExpired on; only a review already marked gone this way can later come back as REAPPEARED on a following run. A run capped by Max items, a resumed run, or a run where some company could not be read skips EXPIRED detection entirely, so no tracked review is marked gone that run; newly seen and updated reviews are still saved into the baseline either way. stateKey names or shares the stored baseline. Combining Resume with Incremental mode is only allowed to bootstrap a brand-new baseline: if a baseline already has tracked reviews for your scope, adding Resume fails the run with a clear message instead of mixing the two silently.

Send results into your apps (MCP connectors)

Optionally pipe the scraped reviews into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is written first and is never changed by this step.

What gets written to the connector: a condensed, human-readable summary of each review, not the full JSON. Each row becomes one entry with a title and its key fields flattened to plain text. The complete row always stays in the Apify dataset.

  1. Authorize a connector once under Apify > Settings > Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where one page per review should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. A connector that is unauthorized, unreachable, or rejects a write logs a warning and leaves your scrape untouched. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch to paste company URLs, slugs or domains; urls to paste profile links directly. Both resolve to the same review feed.
companyUrlsarrayprefill: ["https://trustmate.io/opinie/trustmate-io"]Search mode only, ignored in URL mode. Company profile URLs, bare slugs or bare domains, mixed freely.
startUrlsarrayprefill: ["https://trustmate.io/opinie/trustmate-io"]URL mode only, ignored in Search mode. Same entry shapes as companyUrls.
minRatingstring1Only return reviews with at least this star rating (1-5). Applies in both modes.
sortBystringnewestnewest, oldest, ratingDesc, ratingAsc, or recentlyUpdated. Pinned reviews float above the sort, mirroring the site. Applies in both modes.
maxItemsinteger20Hard cap on the total number of review rows collected across all companies. Leave empty for no cap.
maxPagesPerCompanyinteger0Optional cap on review pages fetched per company (about 100 reviews per page). 0 means no page limit; the run still stops at Max items.
includeTranslationsbooleantrueInclude the translations array (machine translations of each review body) on every row.
fetchDetailsbooleanfalseFetch each company's public profile page and attach schema.org profile data, social links, logo and meta descriptions to every review row of that company. Billed per row returned, via the detail-enrichment event.
resumeFromRunIdstring(none)A previous run or dataset ID to continue from. Reviews already collected there are skipped.
incrementalModebooleanfalseRemember this scope's reviews across runs and return only what changed since the last run, tagged changeType.
stateKeystring(none)Optional name for the incremental baseline, so you can run separate monitoring campaigns over the same companies.
emitUnchangedbooleanfalseIncremental mode only. Also return (and bill) reviews that did not change since the last run.
emitExpiredbooleanfalseIncremental mode only. Also return (and bill) reviews no longer found after a complete scan. Only a run that reaches the natural end of every company's feed can detect these.
proxyobjectApify ProxyConnection settings used for every request.
mcpConnectorsarray(none)Optional: send a summary of each review to apps you authorized under Integrations (Notion, Linear, Airtable, Apify).
notionParentPageUrlstring(none)Notion connector only. Page under which one page per review is created.
maxNotifyListingsinteger50Cap on how many rows are written to each connector per run. Does not affect the dataset or your bill.

Output Example

Sample shape: values are illustrative placeholders, not from a real reviewer or company.

{
"platform": "trustmate",
"reviewId": 20481093,
"reviewPublicId": "3f1a9c2e-71b4-4a08-9d3e-000000000001",
"rating": 5,
"reviewBody": "The order arrived a day earlier than expected and everything was carefully packaged. Customer support answered my delivery question within a few hours.",
"authorName": "Anna N.",
"authorType": "person",
"reviewWeight": 1,
"reviewDate": "2025-11-03T09:14:22+00:00",
"reviewUpdatedAt": "2025-11-03T09:14:22+00:00",
"language": "pl",
"verified": true,
"companyReply": "Thank you for the kind words! We are glad the delivery went smoothly and have passed this on to our warehouse team.",
"companyReplyDate": "2025-11-03T18:40:05+00:00",
"companyResponseTimeHours": 9.43,
"helpfulCount": 4,
"unhelpfulCount": 0,
"pinned": false,
"shared": false,
"imported": false,
"importSource": null,
"orderIdentifier": "ORD-88213",
"orderNumber": null,
"isOrderLinked": true,
"reviewStatus": 1,
"reviewEnabled": true,
"translations": [{ "language": "en", "body": "The order arrived a day earlier than expected and everything was carefully packaged." }],
"companyName": "Sample Home and Garden Co.",
"companySlug": "sample-home-garden-co",
"companyWebsite": "https://sample-home-garden-co.example",
"companyCategory": "Home and Garden",
"companyRatingAvg": 4.6,
"companyRatingDistribution": { "1": 12, "2": 4, "3": 9, "4": 58, "5": 312 },
"companyServiceReviewCount": 395,
"companyCombinedReviewCount": 410,
"companyResponseRate": 92,
"companyRecommendPercentage": 88,
"companyCertificates": [],
"sourceUrl": "https://trustmate.io/opinie/sample-home-garden-co",
"scrapedAt": "2025-11-05T02:00:00Z"
}

Plan Requirement

TrustMate serves its review data openly, so the default proxy setting works out of the box and the actor automatically retries with a different connection when one is refused. For very large or frequent monitoring across many companies, the residential proxy group draws from a different IP pool that can help if the default connection starts getting refused; pick it under Connection at a higher metered rate than the default.

FAQ

How much does it cost?

You pay per review row returned, plus a one-time run-start fee. If you turn on fetchDetails, each row is also billed once for its profile-page enrichment, but only when that company's profile page actually yields extractable schema or meta data, not merely because the fetch was attempted. Use Max items to cap the cost of any run. The Pricing tab shows the current rates.

This actor collects only publicly available review data, the same information any visitor can see without logging in. It does not go around authentication or access anything behind a login. You are responsible for how you use the data: follow TrustMate's terms, applicable laws including data-protection rules, and the rights of the people whose names and text appear in reviews.

Can I monitor a company on a schedule and get only new reviews?

Yes. Schedule the actor and turn on Incremental mode. Each run then returns only NEW and UPDATED reviews; UNCHANGED ones are suppressed and not billed unless Emit unchanged is on. REAPPEARED and EXPIRED rows only ever appear after a run that reaches the natural end of every tracked company's feed with Emit expired on, since that is the only way a review is ever marked gone, and only a review already marked gone this way can later come back as REAPPEARED.

Why did my run fail instead of returning an empty dataset?

If a company URL, slug or domain cannot be resolved, or TrustMate refuses every request for it, that company is skipped and reported, and the run keeps going if other companies still have reviews. Only when none of the requested companies could be read at all does the run fail with an explanatory message, instead of finishing successfully with an empty dataset. A run with some companies skipped still succeeds and returns what was scraped, but is treated as an incomplete scan: EXPIRED detection is skipped for it, so no tracked review is marked gone that run, though the reviews it did read are still saved into the Incremental-mode baseline as usual.

What happens if I use Resume and Incremental mode together?

That combination is only allowed to bootstrap a brand-new Incremental baseline from one interrupted run. If a baseline already exists with tracked reviews for your scope, adding Resume fails the run with a clear message rather than mixing the two silently. Remove Resume, or set a different State key, to start a separate monitoring campaign.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

๐Ÿ”— Want more social media data?

Pair this actor with these related scrapers from the same team:

๐Ÿ“ฑ Clutch Scraper
Scrape Clutch company directories and profiles. Get names, ratings, review counts, hourly...
๐Ÿ“ฑ Google Play Reviews
Collect Google Play reviews and ratings for any app across country storefronts. Search by...
๐Ÿ“ฑ Mastodon
From $1/1K. Scrape trending Mastodon profiles and related posts from any Mastodon...
๐Ÿ“‡ Apple App Store Reviews
Scrape Apple App Store reviews across 150+ country storefronts. Search by app name or URL...
๐Ÿ“‡ GoWork FR & DE Company Reviews and Profile Scraper
Extract company profiles from GoWork France and Germany, including contact details...
๐Ÿ“ฑ Truth Social Scraper
Scrape public Truth Social profiles, posts, media, metrics, author data, and complete...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.