Trusted Shops & ProvenExpert Reviews Scraper — German Ratings avatar

Trusted Shops & ProvenExpert Reviews Scraper — German Ratings

Pricing

from $28.00 / 1,000 matched businesses

Go to Apify Store
Trusted Shops & ProvenExpert Reviews Scraper — German Ratings

Trusted Shops & ProvenExpert Reviews Scraper — German Ratings

Scrape public business ratings and reviews from ProvenExpert, Trusted Shops, eKomi, and Google Maps. Match the same company across all four channels, calculate a transparent trust score, track rating changes over time, and benchmark each business against a sector cohort.

Pricing

from $28.00 / 1,000 matched businesses

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Categories

Share

Extract public business ratings and reviews from ProvenExpert, Trusted Shops, eKomi, and Google Maps. Match the same company across channels, calculate a transparent DACH Trust Score, track changes over time, and benchmark each business against a supplied or discovered sector cohort.

Unofficial Actor: This Actor is independently developed and is not affiliated with, endorsed by, or sponsored by ProvenExpert, Trusted Shops, eKomi, or Google.

The Actor works without login, cookies, paid APIs, or a dependency on another Apify Actor.

What this Actor does

  • Extracts ProvenExpert company profiles, ratings, recommendation rates, external sources, contact data, and native reviews.
  • Extracts Trusted Shops profile data, certificate status, rating distribution, lifetime/current review counts, and per-review verification status when the API declares it.
  • Extracts eKomi certificate data, rating basis, lifetime counts, positive/neutral/negative percentages, post-transaction reviews, order dates, and owner replies.
  • Extracts Google Maps company, category, rating, review count when visible, website, phone, address, and coordinates.
  • Follows supported external profile links found on ProvenExpert and refreshes those sources directly.
  • Checks the company homepage once for supported review badge/profile links, without crawling the rest of the website.
  • Matches profiles using explicit business groups, website domains, phones, company names, postal codes, and cities.
  • Produces one cross-platform business row per matched company.
  • Calculates a versioned DACH Trust Score from rating quality, volume, channel coverage, freshness, and source verification.
  • Saves compact snapshots to a persistent time-series dataset and keeps an indexed latest-state store for fast comparisons at any history size.
  • Supports changesOnly output for alerts, webhooks, and low-noise scheduled monitoring.
  • Marks partial multi-source snapshots as incomplete; failed channels are never reported as removed and incomplete snapshots never advance history.
  • Discovers ProvenExpert businesses by sector/keyword and location.
  • Calculates sector rating, Trust Score, and review-volume percentiles from observed cohort data.

Supported platforms

PlatformProfile aggregateNative reviewsDirect paginationVerification field
ProvenExpertYesYesYesSource-declared policy
Trusted ShopsYesYesYesPer-review API status when declared
eKomiYesYesYesPost-transaction collection policy
Google MapsYesAggregate onlyNot applicablePublic reviews are not treated as verified

Google Maps review text is intentionally outside this Actor's scope. The commercial differentiator is a normalized cross-channel business row, while specialist Google Maps Actors already cover high-volume Google review extraction.

Result types

1. Cross-platform business row

{
"type": "business",
"entityKey": "business_673e011f616ad6f1f205",
"companyName": "S&P Unternehmerforum GmbH",
"category": "Seminare + Lehrgänge mit Zertifizierung",
"city": "Unterföhring",
"sourceCount": 2,
"platforms": {
"provenexpert": {
"rating": 4.63,
"reviewCount": 776,
"lifetimeReviewCount": 809,
"verifiedReviewCount": null,
"recommendationRate": 99,
"verificationPolicy": "source_declared"
},
"google_maps": {
"rating": 5,
"reviewCount": 5,
"verificationPolicy": "unverified_public_reviews"
}
},
"crossChannel": {
"averageRating": 4.82,
"ratingRange": 0.37,
"totalRatingReviewCount": 781
},
"trustScore": 80.7,
"trustScoreVersion": "dach-trust-v1",
"benchmark": {
"status": "ready",
"basis": "category",
"category": "Seminare",
"cohortSize": 25,
"trustScorePercentile": 87,
"ratingPercentile": 79,
"reviewVolumePercentile": 92
},
"matchConfidence": 1,
"matchSignals": ["explicit_business_group"],
"scrapedAt": "2026-07-26T11:00:00.000Z"
}

2. Change row

{
"type": "change",
"entityKey": "business_673e011f616ad6f1f205",
"companyName": "S&P Unternehmerforum GmbH",
"changeStatus": "changed",
"previousScrapedAt": "2026-07-19T11:00:00.000Z",
"trustScore": 80.7,
"previousTrustScore": 79.9,
"trustScoreDelta": 0.8,
"totalReviewCountDelta": 12,
"platformChanges": {
"provenexpert": {
"status": "present",
"rating": 4.63,
"previousRating": 4.61,
"ratingDelta": 0.02,
"reviewCount": 776,
"previousReviewCount": 764,
"reviewCountDelta": 12
}
},
"scrapedAt": "2026-07-26T11:00:00.000Z"
}

3. Platform profile row

Every source produces a normalized profile row. Platform-specific fields remain available, including ProvenExpert external sources, Trusted Shops star distribution and certificate status, eKomi sentiment percentages, and Google Maps coordinates.

The normalized count fields are:

  • ratingReviewCount: number of reviews used by the platform's displayed rating period.
  • lifetimeReviewCount: visible all-time count when the platform exposes it.
  • verifiedReviewCount: count explicitly declared verified by that source; null means the Actor refuses to infer a count.
  • verificationPolicy: explains how the source describes verification.

4. Review row

ProvenExpert, Trusted Shops, and eKomi produce individual review rows with:

  • Review ID, rating, text, subject, reviewer display name, and publication date.
  • Recommendation state where derivable.
  • Source verification status.
  • eKomi order/experience date and business reply.
  • ProvenExpert detailed subratings.

5. Error row

Invalid or blocked profiles produce transparent, uncharged error rows without stopping valid inputs.

Business and change rows include snapshotStatus. A value of complete means every grouped source required for comparison succeeded. A value of incomplete includes failedPlatforms; its deltas and benchmark percentiles are intentionally suppressed.

Input examples

One ProvenExpert profile with automatic Google matching

{
"startUrls": [
{
"url": "https://www.provenexpert.com/de-de/sp-unternehmerforum-gmbh/"
}
],
"followExternalProfiles": true,
"maxReviewsPerProfile": 100
}

Guaranteed matching across four channels

Use a stable id when you already know the URLs. This bypasses fuzzy matching and guarantees that all URLs become one business row.

{
"businesses": [
{
"id": "customer-123",
"companyName": "Example GmbH",
"category": "Online-Marketing",
"city": "Berlin",
"provenExpertUrl": "https://www.provenexpert.com/de-de/example-gmbh/",
"trustedShopsUrl": "https://www.trustedshops.de/bewertung/example-de",
"eKomiUrl": "https://www.ekomi.de/cert/PARTNER_ID",
"googleMapsUrl": "https://www.google.de/maps/place/Example+GmbH/..."
}
],
"maxReviewsPerProfile": 50
}

Discover and benchmark a sector

{
"searchQueries": [
{
"term": "Online-Marketing",
"location": "Berlin",
"maxProfiles": 100
}
],
"outputMode": "profiles_only",
"maxReviewsPerProfile": 0,
"followExternalProfiles": false,
"minimumBenchmarkCohortSize": 10
}

Scheduled change monitor

Run this input daily or weekly with an Apify Schedule:

{
"businesses": [
{
"id": "competitor-a",
"provenExpertUrl": "https://www.provenexpert.com/de-de/example/",
"googleMapsUrl": "https://www.google.de/maps/place/Example/..."
}
],
"outputMode": "profiles_only",
"maxReviewsPerProfile": 0,
"saveHistory": true,
"historyDatasetName": "competitor-reputation-history",
"emitChanges": true,
"changesOnly": true
}

The first run creates a new change. Later unchanged runs return no paid result rows when changesOnly is enabled. A new review, review-count movement, channel addition/removal, rating change above the configured threshold, or Trust Score movement produces output.

Input reference

FieldDefaultDescription
startUrlsSample ProvenExpert URLMixed supported profile URLs
profileSlugs[]ProvenExpert slugs
businesses[]Explicit cross-platform company groups
searchQueries[]ProvenExpert discovery queries; maximum 100 profiles per query
localede-deLocale used for ProvenExpert URL construction
outputModeprofile_and_reviewsControls raw profile/review rows
maxReviewsPerProfile20Maximum reviews per supported review source; hard maximum 500
sortBynewestNewest, oldest, best, worst, or experiences first
followExternalProfilestrueDirectly refresh supported links found on ProvenExpert
discoverExternalProfilesFromWebsitetrueCheck the company homepage for supported review badge/profile links
includeBusinessSummarytrueEmit matched cross-platform business rows
emitChangestrueEmit comparison rows
changesOnlyfalseSuppress unchanged results and known review IDs
saveHistorytrueSave snapshots plus indexed latest state for future runs
historyDatasetNamedach-reputation-historyPersistent time-series dataset; its latest-state KVS is derived automatically
previousDatasetIdEmptyExplicit comparison baseline selected with a read-only dataset picker
benchmarkDatasetIdEmptyOptional reference corpus selected with a read-only dataset picker
minimumBenchmarkCohortSize3Minimum sample before benchmark is ready
ratingChangeThreshold0.01Minimum rating movement treated as changed
maxConcurrency3Concurrent profile pages
proxyConfigurationDirectOptional Apify Proxy configuration

Trust Score methodology

dach-trust-v1 is a transparent 0–100 composite:

ComponentWeightCalculation
Rating quality55%Cross-channel rating normalized from 1–5 to 0–100
Review volume20%Log-scaled review count; large profiles cannot dominate linearly
Channel coverage10%Coverage reaches 100 at three matched sources
Review freshness10%Exponential decay from the newest observed review date
Verified-source share5%Share of sources with transaction/post-transaction verification policies

Cross-channel rating uses square-root review-count weights. This respects evidence volume without allowing a single very large channel to erase the others. The output contains every component and a version string, so downstream users can audit or replace the score.

Benchmark methodology

Benchmarks use only data actually observed in the current input, a discovery query, or benchmarkDatasetId. The Actor never claims a global DACH percentile from an unobserved corpus.

  • Exact normalized category cohorts are preferred.
  • If the category cohort is too small, the supplied all-business cohort is used.
  • status: "insufficient_sample" is returned below minimumBenchmarkCohortSize.
  • Percentiles use a midpoint rank for ties.

For a market-wide benchmark, first run a sufficiently large discovery input and reuse its dataset ID as benchmarkDatasetId.

The benchmark is an observed-cohort percentile, not a claim about every DACH business. The Trust Score is a versioned analytical heuristic rather than a certification or financial/credit rating.

Incomplete multi-platform snapshots are excluded from benchmark percentiles and stored history. This prevents a temporary source outage from lowering a company's score or generating a false channel-removal alert.

Entity matching

Profiles are linked using a scored combination of:

  1. Explicit businesses[].id.
  2. Exact website domain.
  3. Normalized phone number.
  4. Normalized company-name similarity.
  5. Postal code or city.

The resulting matchConfidence and matchSignals make every automatic match inspectable. Use explicit groups for branches, franchises, or names that are intentionally different across platforms.

Automatic clusters cannot contain two profiles from the same platform unless the user explicitly placed them in the same businesses[].id group. This prevents transitive fuzzy matches from collapsing separate branches.

Supported URL formats

  • ProvenExpert localized and non-localized public profile URLs.
  • Trusted Shops legacy info_*.html and modern /bewertung/{shop-slug} URLs.
  • eKomi legacy /bewertungen-*.html and modern /cert/{partnerId} URLs.
  • Public Google Maps place and short-share URLs. Google Maps produces aggregate fields only.

API

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('kamerozkan/provenexpert-reviews-scraper').call({
searchQueries: [
{ term: 'Online-Marketing', location: 'Berlin', maxProfiles: 50 }
],
outputMode: 'profiles_only',
maxReviewsPerProfile: 0
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("kamerozkan/provenexpert-reviews-scraper").call(run_input={
"startUrls": [
{"url": "https://www.provenexpert.com/de-de/sp-unternehmerforum-gmbh/"}
],
"followExternalProfiles": True,
"maxReviewsPerProfile": 100,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Pay-per-event pricing

The Actor is configured with these launch events:

EventSuggested launch price
business-result$0.04 per matched business row
change-result$0.01 per change row
profile-result$0.015 per platform profile
review-result$0.001 per review
Synthetic apify-actor-start$0.005 per GB of configured memory, minimum one event

The synthetic apify-default-dataset-item event is intentionally omitted to prevent double charging. Error rows are not attached to a paid event. Higher Apify subscription tiers receive progressively lower event prices.

For launch, keep all custom prices visible and simple. After real Store usage appears, optimize around the highest-retention workflow—usually scheduled changesOnly monitoring or sector discovery.

Reliability

  • Browser-backed ProvenExpert pagination.
  • ProvenExpert discovery uses its public search API and validates that the requested cohort was fully collected; incomplete discovery fails visibly instead of returning a silent ten-row subset.
  • Trusted Shops review API pagination with explicit date/rating sorting.
  • eKomi AJAX pagination.
  • Modern and legacy Trusted Shops/eKomi URL support, including redirect-safe eKomi pagination.
  • Direct Google Maps data with structured-metadata selectors and a clearly labeled ProvenExpert aggregate fallback when Google blocks a linked refresh.
  • Duplicate review IDs removed per profile.
  • Indexed latest state plus append-only time-series history; comparisons do not scan the full history.
  • History advances only after all paid output is delivered. If the maximum run charge is reached, an uncharged MAX_TOTAL_CHARGE_REACHED row is emitted and the next run can safely retry.
  • Partial source failures create an incomplete snapshot with unknown channel status; they never create false removed/added oscillations and never overwrite the last complete snapshot.
  • Invalid profiles do not stop the remaining batch.
  • A run with profile targets fails when every target fails, while legitimate zero-result discovery remains a successful empty result.
  • Company-homepage discovery blocks localhost, private/link-local IPs, private DNS answers, and redirects to non-public network destinations.
  • Images, media, and fonts are blocked to lower compute cost.
  • Every image build must pass unit coverage for parsers, matching, scoring, benchmarks, deltas, delivery/history safety, URLs, DNS/SSRF checks, and discovery before the Actor can start.
  • Live-tested multi-source crawling, second-run history comparisons, changes-only suppression, sector discovery, and 25-review external pagination.

This Actor extracts data displayed on public profile pages. You are responsible for complying with platform terms, database rights, copyright, and applicable privacy laws such as GDPR. Avoid redistributing reviewer personal data without a valid purpose and legal basis.

This is an unofficial Actor. It is independent and is not affiliated with, endorsed by, or sponsored by ProvenExpert, Expert Systems, Trusted Shops, eKomi, or Google.