GoWork Scraper - Companies, Reviews, Ratings & Contacts avatar

GoWork Scraper - Companies, Reviews, Ratings & Contacts

Pricing

from $1.00 / 1,000 results

Go to Apify Store
GoWork Scraper - Companies, Reviews, Ratings & Contacts

GoWork Scraper - Companies, Reviews, Ratings & Contacts

Extract company profiles from GoWork France and Germany, including contact details, review threads with replies, ratings breakdowns, opening hours, social links, SIREN/NAF identifiers, and 100+ structured company fields. Supports keyword search, URL input, and bulk sitemap discovery.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

9 days ago

Last modified

Features

Limited permissions

Share

GoWork Scraper: Company Reviews, Ratings and Profile Data

GoWork Scraper turns GoWork France (gowork.fr) and GoWork Germany (gowork.de), employer-review sites where employees and candidates rate and review companies, into structured data. One run gives you a company's contact info, full review threads with replies, a star-rating histogram, opening hours, social links, French company identifiers (SIREN, SIRET, NAF code) where available, and 100+ structured fields per company. Start from a free-text search, pasted links, or a bulk sitemap walk, then export to JSON, CSV or Excel, or read the results straight into your app through the API.

Why This Scraper?

  • 100+ fields. Structured fields per company, including parsed geo coordinates, French SIREN/SIRET/NAF identifiers, employee count range, capital amount and currency, a full review thread tree with replies, a star-rating histogram with counts and percentages, opening hours, and social links.
  • Two output shapes. One row per company with reviews nested inside, or one row per review with the company's context joined in, built for BI tools.
  • Three ways in. Free-text search, paste company or search-result links, or walk GoWork's own sitemap for bulk discovery, with auto-paging on search and pasted search-result links.
  • FR and DE. Covers both GoWork France and GoWork Germany from the same input form; URL mode also detects the locale from the link itself.
  • Filters. Client-side filters skip companies below a rating or review-count threshold, or that have no scored reviews or aren't marked verified, so a capped run spends its budget on the companies you actually want.
  • Resume and incremental. Resume continues an interrupted run without re-collecting (or re-paying for) companies it already saved; Incremental mode tracks a saved search over time and labels every row NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED.
  • Honest failures. A run fails outright when no working connection could be established, when every page was refused so nothing loaded, or when a pasted resumeFromRunId can't be read at all; a single page or company that gets refused mid-run is skipped and logged instead of stopping the whole run.

Use Cases

  • HR and employer-branding teams: monitor what employees and candidates say about your own company, or a competitor, across France and Germany.
  • Recruitment and staffing agencies: check a client's employer reputation and recurring complaints before placing candidates there.
  • Market and workforce researchers: build datasets of employer ratings, review volume and review activity by sector or region.
  • Business data providers: enrich company records with French SIREN, SIRET and NAF identifiers, employee-count ranges and capital figures.
  • Reputation and response teams: pull review threads with replies to measure response rate and catch new reviews on a recurring schedule.

Data You Get

Sample shape: values are illustrative placeholders, not from a live listing.

FieldExample
slugsample-company-paris
urlhttps://gowork.fr/sample-company-paris
siteLocalefr
originalSearchUrl / searchIndexhttps://gowork.fr/sample-company-paris / 0 (the input URL or search that produced the row - for a sitemap URL this is the sitemap itself - and that input's 0-based position in your input list)
org_name / longNameSample Company / SAMPLE COMPANY SAS
org_telephone / companyEmail+33100000000 / contact@example.com
companyWebsitehttps://example.com/
companySocialLinks[{"network":"linkedin","url":"..."}]
org_street_address / postalCode / org_address_locality / org_address_region / org_address_country1 Rue de Sample, 75001 Paris / 75001 / Paris / Ile-de-France / FR
latitude / longitude48.8566 / 2.3522
siren / siret / nafCode000000000 / 00000000000000 / 0000A
companyEmployeeCountLabel / Min / Max201-500 / 201 / 500
companyCapital / Amount / Currency80000 EUR / 80000 / EUR
companyFoundedDate2016-06-01
businessTradeName / companyBusinessAreaRetail Distribution / Wholesale and Logistics
org_rating_value / org_rating_count4.4 / 5 (listing-card rows without detail carry org_rating_value and pageGlobalRating as a rounded whole number, for example 3 for a real 2.6)
pageGlobalReviewCount31
ratingStar1Count..ratingStar5Count0, 0, 1, 1, 3
companyOpeningHoursJson{"lundi":"09:00-18:00", ...}
firstReviewDate / lastReviewDate2022-03-11T09:15:00.000Z / 2026-01-04T16:20:00.000Z
responseRate / avgRepliesPerReview / replyCountTotal50 / 1.0 / 2
reviewLanguagesAvailable / reviewYearDistribution["fr"] / {"2024":2,"2025":2,"2026":1}
reviewsarray of {reviewId, reviewerName, reviewDate, content, ratingValue, languageCode, authorKind, isModerated, isArchived, replies[]}
scrapedAt2026-01-05T09:00:00.000Z

When the output shape is reviews, each row is one review instead: it carries companySlug, companyName, companyRating and a compact set of other company fields joined in, plus that review's own reviewId, reviewerName, content, ratingValue, replies and moderation flags. A company record (either shape) also carries an SEO and diagnostics bundle (pageTitle, metaDescription, ogTitle/ogImage, raw jsonLd blocks), breadcrumbs, keywords, trusted-partner links, and, only when Incremental mode is on, changeType, changedFields, firstSeenAt and lastSeenAt. Review threads are capped per company by Max review threads per company (default 20).

How to Use

  1. Pick a mode: search (free-text query), url (paste a company link or a search-result link), or sitemap (bulk discovery from GoWork's own sitemap).
  2. Fill in the fields for that mode, and turn Fetch full company detail on if you want reviews, opening hours and the rating histogram rather than just the search-result card.
  3. Set Max companies (and, if you want, Max review threads 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 by query:

{
"mode": "search",
"locale": "fr",
"queries": ["Carrefour"],
"fetchDetails": false,
"maxListings": 25
}

Search with full detail:

{
"mode": "search",
"locale": "fr",
"queries": ["Carrefour", "Auchan"],
"fetchDetails": true,
"maxPages": 2,
"maxListings": 50,
"maxReviewsPerCompany": 100
}

URL mode:

URL shapeExampleWhat you get
Company page (FR)https://gowork.fr/b-hive-mulhouseThat company
Company page, www hosthttps://www.gowork.fr/b-hive-mulhouseSame company; the output url always uses the apex host gowork.fr
Search (FR)https://gowork.fr/search?q=CarrefourCompanies from page 1, auto-paginating forward
Search, paginated (FR)https://gowork.fr/search?q=Carrefour&page=2Starts at the given page
Search (DE)https://gowork.de/search?q=AldiGerman-locale search
Search, paginated (DE)https://gowork.de/search?q=Aldi&page=2Starts at the given page
Company page, large chainhttps://gowork.fr/randstad-franceThat company, with review threads up to Max review threads per company
Company page, same-name suffixhttps://gowork.fr/le-carrefour-de-la-fleur-montigny-en-gohelle,1That company (the ,1 suffix tells same-named companies apart)
Search, no query (FR)https://gowork.fr/searchEvery company on the site, 25 per page, auto-paginating forward (bounded by Max companies)
City or region listinghttps://gowork.fr/avis/paris;lCompanies listed for that city or region (about 70 per page), auto-paginating forward; .../avis/paris;l/2;pg or ?page=2 starts at page 2
Trade listinghttps://gowork.fr/avis/location-de-logements;trCompanies listed for that trade, auto-paginating forward
Activity-area listinghttps://gowork.fr/avis/7112b;aCompanies listed for that activity area, auto-paginating forward
Sitemap shard, companieshttps://gowork.fr/sitemap_company_1.xml.gzThe company profiles in that one shard (up to Max companies, narrowed by Sitemap filter)
Sitemap shard, citieshttps://gowork.fr/sitemap_cities_1.xml.gzThe city listing pages in that shard, each walked in order as a listing (also sitemap_regions_N and sitemap_trades_N)
Sitemap index (FR)https://gowork.fr/sitemap.xmlCompanies discovered via the sitemap, using Sitemap kind and Max companies
Sitemap index (DE)https://gowork.de/sitemap.xmlSame, for gowork.de

Default behaviour change: the Start URLs field now defaults to one example of each shape above (the www link is a Console suggestion only, because it resolves to the same company as the apex link), so a URL-mode run with the field left untouched works through those examples in order instead of returning nothing (Max companies is one shared budget, so a small cap is used up by the first entries). Callers who keep the default list and use Incremental mode without a stateKey get one new baseline the first time after this change, because the auto key is derived from the URL list; set stateKey to keep a baseline across list edits. Clear the field or replace it with your own links to scrape only those. Query parameters other than page are kept on pasted search links.

URL mode example:

{
"mode": "url",
"urls": [
"https://gowork.fr/b-hive-mulhouse",
"https://gowork.fr/search?q=Carrefour&page=2"
],
"fetchDetails": true,
"maxListings": 30
}

Reviews-only output:

{
"mode": "url",
"urls": ["https://gowork.fr/b-hive-mulhouse"],
"output": "reviews",
"maxReviewsPerCompany": 50
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/gowork-eu-scraper").call(run_input={"mode": "search", "locale": "fr", "queries": ["Carrefour"], "fetchDetails": True})
for company in client.dataset(run["defaultDatasetId"]).iterate_items():
print(company["org_name"], company.get("org_rating_value"))

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/gowork-eu-scraper').call({ mode: 'search', locale: 'fr', queries: ['Carrefour'], fetchDetails: true });
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 companies shapes a multi-query, multi-URL or sitemap run

Max companies (maxListings) is one shared budget for the whole run, not a per-query or per-URL allowance. Queries, pasted URLs, or sitemap-discovered links are worked through in the order you gave them; once the cap is reached the run stops right there, and any entries further down the list are never even started. Put your highest-priority query or URL first, or raise the cap (or set it to 0 for unlimited, bounded only by the run's own timeout) if every entry needs to be represented.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run ID or dataset ID and this run skips every company slug already saved there, appending only new companies. A background checkpoint also lets a run that the platform itself restarts mid-walk pick up where it left off, without re-collecting or re-paying for what it already saved. There is a real limitation here: the pagination-stop check for one search or URL looks at every company slug collected anywhere in the tracked scope, including slugs Resume seeded from an earlier run, not just that search's own earlier pages. If new companies were added to the results since the earlier run, a resumed walk's next page can turn out to be entirely companies already saved, and the walk stops there rather than continuing to genuinely new companies further down.
  • Incremental mode (incrementalMode) is for a search, URL list or sitemap config you run on a schedule. Each company is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED, or EXPIRED. A company can only be marked EXPIRED after a run that scanned its whole tracked scope with no cap, page limit or resume cutting it short, and only when Emit expired rows is on, because that same setting is also what marks the company as gone in the first place. The same limitation described under Resume above also applies here when you configure more than one query, URL or sitemap section in the same run: a later search's own walk can stop early because it overlapped with a different search's results earlier in the same run, and that early stop is still counted as a complete scan, which can wrongly mark a still-live company EXPIRED rather than actually gone. Keep each tracked scope to its own run if you rely on Emit expired rows across multiple queries or URLs. With Emit expired rows off, a company that drops out of your tracked search is simply left untouched in the saved baseline (no row for it that run); when it turns up again later it is classified UPDATED or UNCHANGED like normal, never REAPPEARED, since REAPPEARED only applies to a company a prior run actually marked gone. A company is UPDATED when any output field differs from last time, except scrapedAt (always excluded) and any fields you list in Ignore fields when detecting changes (ignoreFieldsForChanges, one name per line; nested paths use dots, such as reviews.content). Ignored fields stay in the row but never trigger UPDATED or appear in changedFields, and changing the list does not cause a one-time wave of UPDATED rows. A pasted search URL that starts at page=2 or later is a partial scan and never produces EXPIRED. stateKey names or shares the saved baseline; leave it empty and one is derived from your mode, queries/URLs/sitemap settings and filters, so two different searches never share a baseline by accident. With Incremental mode off, output is exactly as before.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results 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 never changed.

What gets written to the connector: a condensed, human-readable summary of each record, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record 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 items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (free-text queries), url (paste detail or search-result links), or sitemap (bulk discovery from GoWork's sitemap).
localestringfrfr for gowork.fr or de for gowork.de. Applies to search and sitemap modes; URL mode detects the locale from the link's host instead.
queriesarray(none; input form prefills ["Carrefour"])Search terms (company name, brand, or keyword). One query becomes one search-result walk.
urlsarraythe example URLs listed in the URL-mode tableCompany detail links, search-result links, /avis/<name>;l, ;tr or ;a listing links, sitemap index links (/sitemap.xml) or single sitemap shard links (/sitemap_company_N.xml.gz), multiple allowed. Search and listing links auto-paginate forward.
sitemapKindstringcompaniescompanies (company profile URLs from the sitemap's company shards, recommended), cities, regions, rankings, or all. The old value constant is accepted and means companies (GoWork now keeps only the home page in its "constant" shard). Pasting a /sitemap.xml link in URL mode uses this same setting. A sitemap index or shard that fails to load makes the discovery count as incomplete, so Incremental mode never marks companies EXPIRED from it.
sitemapFilterstring"" (empty = no filter)Case-insensitive substring filter on the discovered URL's slug.
outputstringcompanycompany (one row per company, reviews nested) or reviews (one row per review, company fields joined in; auto-enables fetchDetails).
fetchDetailsbooleantrueOn: fetches full company detail (reviews, opening hours, rating histogram, social links, company identifiers). Off: search-mode listings return only the search-result card, with no detail-page fetch or charge. On city, trade and activity-area listing links (and sitemap cities, regions and trades shards) the card carries a rounded whole-number rating (for example 2.6 shows as 3) and no review count.
maxPagesinteger(none; empty = unlimited)Pagination ceiling per query or per search-result link. Leave empty to walk every result page, still bounded by Max companies.
maxListingsinteger25Hard ceiling on companies returned across the whole run, in every mode. 0 = unlimited, bounded only by the run's own timeout.
maxReviewsPerCompanyinteger20Cap on review threads (each can include replies) returned per company, from 0 (no cap) to 500. The default is 20 (it was 50 in earlier versions), so runs that never set this field now return up to 20 review threads per company; raise it to get more. A company page carries up to 30 review threads; a cap above 30 (or 0) makes the actor open the following review pages of that company, roughly one extra page request for every further block of 30 threads. Incremental mode compares the first page of review threads only, so changing this cap never re-labels tracked companies.
minRatinginteger0Skip companies whose aggregate rating is below this threshold, from 0 to 5. On city, trade and activity-area listing links (and sitemap cities, regions and trades shards) with Fetch full company detail off, the rating is the listing card's rounded whole-number average (for example 2.6 shows as 3) and this filter compares against that rounded value; turn Fetch full company detail on for the exact rating.
minReviewCountinteger0Skip companies with fewer than this many total reviews. City, trade and activity-area listing cards show no review count, so on those links turn Fetch full company detail on to apply it; with detail off a listing run finds no match and stops after 10 pages in a row with no result (the run is marked as an incomplete scan).
ratedOnlybooleanfalseSkip companies with no scored reviews on file. Only reliable when Fetch full company detail is on (or on a pasted company link, which always reads full detail); a plain search-result card doesn't carry a review count to check, so with detail off this can filter out every result.
verifiedOnlybooleanfalseSkip companies not marked as verified. Only takes effect when Fetch full company detail is on, since verification status isn't available on a search-result card alone.
proxyobject(none; input form prefills Apify Residential, country FR)This actor needs a residential-class connection. The group you pick is used as chosen; a refused page is retried on fresh connections and then on a backup connection for that page only.
mcpConnectorsarray(none)Optional: send a summary of each record to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which records are created.
maxNotifyListingsinteger50Cap on items written to each connector per run, from 1 to 1000. Does not affect the dataset.
resumeFromRunIdstring(none)A previous run ID or dataset ID to continue a full-catalogue walk across separate runs. Companies already saved there (matched by slug) are skipped.
ignoreFieldsForChangesarray[]Incremental mode only: field names (dotted for nested) excluded from change detection.
incrementalModebooleanfalseTrack a recurring search/URL/sitemap config over time and label each row NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED.
stateKeystring(none)Names the saved baseline this run compares against. Leave empty to auto-derive one from your mode/queries/urls/sitemap settings/filters.
emitUnchangedbooleanfalseAlso return (and bill) companies with no detected change.
emitExpiredbooleanfalseAlso return (and bill) a row for a previously-tracked company no longer found, but only after a run that scanned the full tracked scope with no cap, page limit, or resume cutting it short.

Output Example

Sample shape: values are illustrative placeholders, not from a live listing.

{
"source": "gowork_detail",
"listingId": "sample-company-paris",
"slug": "sample-company-paris",
"url": "https://gowork.fr/sample-company-paris",
"siteLocale": "fr",
"originalSearchUrl": "https://gowork.fr/sample-company-paris",
"searchIndex": 0,
"scrapedAt": "2026-01-05T09:00:00.000Z",
"pageTitle": "Avis sur Sample Company - 31 avis - GoWork.fr",
"h1": "Avis Sample Company",
"htmlLang": "fr-FR",
"canonicalUrl": "https://gowork.fr/sample-company-paris",
"org_name": "Sample Company",
"longName": "SAMPLE COMPANY SAS",
"org_telephone": "+33100000000",
"org_tax_id": "000000000",
"org_description": "Wholesale distribution and logistics services for retail clients.",
"org_street_address": "1 Rue de Sample, 75001 Paris",
"org_address_locality": "Paris",
"org_address_region": "Ile-de-France",
"org_address_country": "FR",
"postalCode": "75001",
"latitude": 48.8566,
"longitude": 2.3522,
"siren": "000000000",
"siret": "00000000000000",
"nafCode": "0000A",
"activityShortLabel": "Wholesale distribution, warehousing",
"companyEmployeeCountLabel": "201-500",
"companyEmployeeCountMin": 201,
"companyEmployeeCountMax": 500,
"companyEmail": "contact@example.com",
"companyWebsite": "https://example.com/",
"companyLinkedInUrl": "https://fr.linkedin.com/company/sample",
"companySocialLinks": [
{ "network": "linkedin", "url": "https://fr.linkedin.com/company/sample" }
],
"companyBusinessArea": "Wholesale and Logistics",
"companyActivityDescription": "Wholesale distribution and logistics services for retail clients.",
"businessTradeName": "Retail Distribution",
"businessTradeSlug": "retail-distribution",
"companyCapital": "80000 EUR",
"companyCapitalAmount": 80000,
"companyCapitalCurrency": "EUR",
"companyFoundedDate": "2016-06-01",
"companyOpeningHoursJson": "{\"lundi\":\"09:00-18:00\"}",
"companyTrustedPartnersCount": 2,
"org_rating_value": 4.4,
"org_rating_count": 5,
"org_review_count": 5,
"pageGlobalRating": 4.4,
"pageGlobalReviewCount": 31,
"ratingHistogramScoredTotal": 5,
"ratingStar1Count": 0,
"ratingStar2Count": 0,
"ratingStar3Count": 1,
"ratingStar4Count": 1,
"ratingStar5Count": 3,
"ratingStar1Percent": 0,
"ratingStar2Percent": 0,
"ratingStar3Percent": 20,
"ratingStar4Percent": 20,
"ratingStar5Percent": 60,
"responseRate": 50,
"avgRepliesPerReview": 1.0,
"replyCountTotal": 2,
"reviewLanguagesAvailable": ["fr"],
"reviewYearDistribution": { "2024": 2, "2025": 2, "2026": 1 },
"firstReviewDate": "2022-03-11T09:15:00.000Z",
"lastReviewDate": "2026-01-04T16:20:00.000Z",
"reviews": [
{
"reviewId": "00000000-0000-0000-0000-000000000000",
"reviewerName": "Jane Doe",
"reviewDate": "04-01-2026 16:20",
"reviewDateIso": "2026-01-04T16:20:00.000Z",
"content": "Sample review text describing a typical experience working here.",
"contentLength": 62,
"ratingValue": 5,
"languageCode": "fr",
"authorKind": "ANONYMOUS",
"isModerated": false,
"isArchived": false,
"replyCount": 1,
"replies": [
{
"replyId": "00000000-0000-0000-0000-000000000001",
"authorName": "Employer Response Team",
"content": "Sample reply text thanking the reviewer for their feedback.",
"date": "05-01-2026 09:00",
"dateIso": "2026-01-05T09:00:00.000Z"
}
]
}
],
"breadcrumbs": [{ "name": "Sample", "url": "/avis/sample" }],
"keywords": ["industry", "engineering"],
"mainTextPreview": "Engineering consulting and design office serving industrial clients (preview)",
"jsonLd": [
{ "@context": "https://schema.org", "@type": "Organization", "name": "SAMPLE COMPANY" }
]
}

Plan Requirement

GoWork protects its pages with a bot challenge that refuses ordinary datacenter connections, so this scraper needs a residential proxy. Keep the proxy field on Apify Residential (the form prefills it with country FR). Residential exits are not all equal: a page that is refused on one connection often loads on a fresh one, so for each page the actor retries on a new Apify Residential connection, then moves to a backup connection for that page only, before giving up on it. A refused page never switches the rest of the run away from your chosen proxy. If you pick a different Apify proxy group (for example Datacenter), that group is used as you chose it and is not upgraded to Residential for you; if you turn Apify proxy off and paste no proxy URLs, requests go out directly, which this site usually refuses.

The Apify Free plan does not include residential proxies. On Free the log shows a warning that the selected connection is unavailable, and the run continues on a backup connection ("Served over the backup connection ..." appears once the first page loads there); some pages may still be refused. For reliable results use a paid plan that includes the residential group, or turn off "Use Apify proxy" and paste your own residential proxy URLs. If no page loads at all, the run ends as failed with a message saying why ("No results: residential proxies are unavailable on this run ...", "The proxy connection was refused for this account ...", or "Could not load any results page ..."), instead of reporting an empty success; try again in a minute, since pools can be briefly saturated.

The run's Overview tab offers five dataset views: Results, Companies, Reviews summary, Reviews (flat, for the review-rows output) and Changes (incremental mode). A run summary is saved to the OUTPUT record.

FAQ

How much does it cost?

You pay per company or review row returned, plus a second charge only when a company's full detail page is actually fetched and parses successfully. Search-mode listings only trigger that second charge when Fetch full company detail is on. A company link you paste directly, or one discovered through Sitemap discovery mode, is always fetched at the detail rate when the page parses, because there is no lighter "card only" version of a single company page. With the review-rows output, a company that returns no review rows (no reviews, or none left after your filters) is not charged the detail rate. The detail charge is applied per company, right after that company's row is saved, never as one lump at the end of the run, so a run that times out or hits your maximum cost limit stops cleanly and you are only billed for rows actually delivered. The Pricing tab shows current rates. Use Max companies and Max review threads per company to cap the cost of any run.

This actor collects only publicly published employer reviews and company profile data. You are responsible for how you use it: follow GoWork's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Reviewer names as shown on the site and review text can be personal data in some jurisdictions; handle them carefully, especially before republishing, and consider whether you need to redact or aggregate before sharing further.

Can I get only new or changed companies on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated companies, and unchanged ones are not billed unless Emit unchanged rows is also on. Turn on Emit expired rows too if you also want a row for a company that drops out of your tracked search entirely, but only a run that scans the whole tracked scope with no cap, page limit or resume produces those, and a multi-query or multi-URL run can occasionally end one of its own searches early if it overlaps with another search's results, so treat EXPIRED as reliable only for a single tracked search or URL per run.

Why doesn't turning off Fetch full company detail always change what I'm billed for?

Fetch full company detail only controls the detail-page fetch for search-mode listings. A company link you paste directly in URL mode, or one found through Sitemap discovery mode, is always fetched and billed at the detail rate when it parses successfully, since there is no lighter alternative for a single company page.

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

Only a few conditions fail the run outright: no working connection could be established at all before any scraping started, an invalid combination of Resume and Incremental mode inputs was given, or a pasted Resume run or dataset id could not be read. If a connection is available but individual pages or companies get refused mid-run, those are skipped and logged instead, and the run still finishes with whatever it did manage to collect, even if that turns out to be nothing.

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 leads data?

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

๐Ÿ“‡ JobStreet
Pull JobStreet company profiles and employee reviews across Malaysia, Singapore...
๐Ÿ“ฑ Mastodon
Scrape trending Mastodon profiles and related posts from any Mastodon instance. Returns...
๐Ÿ›’ ProductReview.com.au Scraper
Scrape ProductReview.com.au products, businesses and customer reviews. Search by...
๐Ÿ“‡ PagesJaunes FR
Scrapes business listings from PagesJaunes.fr (French Yellow Pages). Extract...
๐Ÿ“ฑ Clutch Scraper
Scrape Clutch company directories and profiles. Get names, ratings, review counts, hourly...
๐Ÿ“‡ Local.ch
Pull structured company data from local.ch, including name, address, GPS, phone, email...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support

  • ๐Ÿž 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 contact@abotapi.com.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.