Wix Marketplace Professionals Metadata Scraper avatar

Wix Marketplace Professionals Metadata Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Wix Marketplace Professionals Metadata Scraper

Wix Marketplace Professionals Metadata Scraper

Extract public Wix Marketplace professional listing metadata from public listing pages. No login, no contact scraping, no detail-page crawling.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

LogFabric

LogFabric

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Extracts public listing-card metadata from Wix Marketplace's "Hire a Professional" pages (https://ja.wix.com/marketplace/hire). It reads only what is already visible on the public listing pages — no login, no detail-page visits, no contact data.

What this Actor does

  • Reads public Wix Marketplace listing pages under https://ja.wix.com/marketplace/hire (and its ?page=N pagination).
  • Parses provider/listing cards using Cheerio (static HTML parsing only).
  • Extracts listing-card metadata: name, partner ID, a constructed profile URL (when safely derivable), location, rating, review count, starting price, short description, and profile image URL.
  • Writes results to the default dataset and a RUN_SUMMARY object to the default key-value store on every run.

What this Actor does NOT do

  • This Actor is not a contact scraper. It does not extract emails, phone numbers, contact form URLs, social links, or external website URLs.
  • It does not visit provider detail pages in v0 — only the listing pages themselves are read.
  • It does not use login, cookies, sessions, a proxy, browser automation (no Playwright/Puppeteer), or any CAPTCHA bypass.
  • It does not crawl any site other than the Wix Marketplace listing pages described above.
  • It does not download profile images — only the image URL, if present, is recorded.

Input

FieldTypeDefaultDescription
maxItemsinteger20Maximum number of listing records to extract (1–100).
startPageinteger1First Wix Marketplace listing page to read (1–42).
maxPagesinteger3Maximum number of listing pages to read (1–42).
debugbooleanfalseEnables verbose debug logging.

Output fields

Each dataset item contains:

  • professionalName
  • partnerId
  • profileUrl — constructed only when a partner ID or profile path can be safely derived from the listing page source; otherwise null.
  • location
  • rating
  • reviewCount
  • startingPrice
  • shortDescription
  • profileImageUrl
  • sourceUrl
  • page
  • found
  • retrievedAt

Missing optional fields are set to null. Values are never invented.

Output limits and cost control

To protect against runaway usage and negative-profit runs on Pay-Per-Result pricing, the Actor computes:

effectiveMaxItems = min(input.maxItems, ACTOR_MAX_PAID_DATASET_ITEMS, 100)
  • ACTOR_MAX_PAID_DATASET_ITEMS is read from the platform environment when present; otherwise it is ignored.
  • 100 is an internal hard cap that always applies.
  • The Actor stops pushing dataset records once effectiveMaxItems is reached, and stops requesting further listing pages once the cap is hit — it never crawls pages unnecessarily after the output limit has been reached.
  • startPage / maxPages are always respected, and the Actor never reads past listing page 42.

RUN_SUMMARY v1

Every run writes a RUN_SUMMARY object (key: RUN_SUMMARY) to the default key-value store with the following schema:

{
"version": "RUN_SUMMARY v1",
"totalItems": number,
"requestedMaxItems": number,
"effectiveMaxItems": number,
"actorMaxPaidDatasetItems": number | null,
"skippedDueToLimit": number,
"errorCount": number,
"warningCount": number,
"warnings": string[],
"sourceUrl": string,
"startPage": number,
"maxPages": number,
"lastPageAttempted": number,
"requestsFinished": number,
"requestsFailed": number,
"cardsSeen": number,
"recordsMatched": number,
"recordsSkipped": number,
"retrievedAt": string
}

Notes on severity

  • Reaching maxItems (i.e. effectiveMaxItems) is not an error — it is reflected in skippedDueToLimit.
  • Fewer results than requested is not automatically an error; the source listing may simply have fewer matching cards.
  • A missing professionalName causes that card to be skipped (counted in recordsSkipped) rather than failing the run.
  • If a profileUrl cannot be safely constructed, the record is kept with profileUrl: null and a single run-level warning is added (not one warning per affected record).

Limitations

  • Relies on the current public HTML structure of the Wix Marketplace listing pages (data-hook="provider-container", provider-box-<uuid>, partner-business-name-<uuid>, and similar patterns). If Wix changes this structure, parsing may need updates.
  • Only listing-card data is extracted; no per-provider detail-page enrichment is performed in v0.
  • Some optional fields (location, rating, review count, starting price, short description, profile image) may be null if not present or not reliably parseable on a given card.

Development status

v0 — initial implementation. Static Cheerio-based parsing only. Not yet published.