Merkandi Scraper | Wholesale Offers & Price Monitor
Pricing
from $1.00 / 1,000 basic offer saveds
Merkandi Scraper | Wholesale Offers & Price Monitor
Export Merkandi wholesale deals with prices, units, stock, minimum orders, countries and manifest links. Filter searches and track new offers or price/stock changes. JSON/CSV, no login. $1/1,000 basic or $3/1,000 detailed offers; no start fee.
Pricing
from $1.00 / 1,000 basic offer saveds
Rating
0.0
(0)
Developer
Cauldo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Merkandi Scraper — Wholesale Offers & Price Monitor
Export public Merkandi wholesale offers into a usable dataset, or watch a search for new deals and changes to advertised prices and stock. Get prices with their units, minimum orders, supplier countries, product conditions, brands, descriptions, image galleries, payment/shipping options and public manifest links. No Merkandi login is required.
Pricing: $1 per 1,000 basic offers, or $3 per 1,000 detailed offers. No start fee. A detailed offer replaces the basic event; it does not incur both. Residential proxy access, retries, comparisons and exports are included. Duplicates, filtered offers, unavailable products and unchanged records skipped by monitoring are not charged. Default settings save up to 20 detailed offers, at most $0.06.
What you can do
- Search wholesale deals by keyword, category, brand or wholesale topic; combine multiple starting URLs.
- Filter by supplier country and product condition, with optional brand, price, price-unit, starting-price and minimum-order filters.
- Export a watchlist of specific product URLs, deduplicated by Merkandi offer ID.
- Choose quick listing extraction or complete public product details.
- Read advertised volume-price tiers, negotiable-price signals and first-order discount terms where the seller provides them.
- Monitor new offers, price changes, quantity changes, condition, minimum order, country, brands, shipping time, VAT label and availability changes. See exact before/after values.
- Download JSON through the dataset, a prepared CSV, or use Apify's dataset export options and API integrations.
- Obtain direct links to publicly linked PDF/Excel manifests and full-size product images.
- Read a coverage report that explains result/page/time/request limits, skipped offers, missing pages and source errors.
The scraper preserves important distinctions: €500 per pallet is not comparable with €10 per piece; “from €2.85” is a starting price; “no limits” is not zero stock. Price-change percentages are calculated only when price units, currency and starting-price qualification match.
Quick start
- Enter a Merkandi search, category, brand, wholesale-topic or product URL, or enter a Search phrase.
- Choose Include full product details and a maximum number of saved offers.
- Run the Actor. Open Wholesale offers, Download offers CSV and Run report and coverage in the output.
With no URL or search phrase, the Actor demonstrates extraction on the electronics category. It does not attempt to export the entire marketplace by default.
Search for used iPhones
{"search": "iphone","conditions": ["Used"],"includeDetails": true,"priceUnits": ["piece"],"maxPrice": 150,"currency": "EUR","maxResults": 25,"maxOffersToScan": 200}
Filters are ANDed across fields and ORed within countries, conditions, brands and include-keyword lists. Exclude keywords reject a match. Keyword checks are literal and case-insensitive; description/brand matching requires detail extraction. A price range rejects missing prices and other currencies. It does not convert currencies or price units.
Export a category economically
{"startUrls": [{"url":"https://merkandi.com/categories/consumer-electronics/32"}],"includeDetails": false,"countries": ["Germany"],"conditions": ["New"],"maxResults": 100,"maxPages": 10,"maxOffersToScan": 300}
Basic mode supplies listing fields: ID, URL, title, price/currency/unit, starting-price flag, available-quantity text, condition, primary image, badges and observation time. Country/brand filters are applied by the discovery site; country and brand output fields require details. FACETS contains filter values from the most recently fetched discovery page. Available brands/subcategories can depend on the starting page.
Watch product URLs for price and stock changes
{"startUrls": [{"url":"https://merkandi.com/products/apple-iphone-11-64-128-giga-mix-grade-amp-battery-full-original-2/1493616"},{"url":"https://merkandi.com/products/authentic-adidas-lot-1-667-pieces-at-only-12-80-piece-shoes-textiles-accessories/1589357"}],"includeDetails": true,"mode": "changed","monitorName": "my-wholesale-watchlist","maxResults": 20}
These are example public URLs; offers can change or disappear. Product watchlists require details.
Save the input as an Apify task and schedule it. Reuse the same monitor name and the same URLs, filters, sort order and detail setting. Avoid overlapping runs with the same monitor name. A best-effort lease detects an already active run; storage does not provide an atomic lock.
The first run establishes a baseline and emits new offers. Later changed runs emit new offers and changed tracked values; new emits previously unseen matches only; all emits every match and still annotates comparisons when a monitor name is supplied. Changing monitoring mode or run limits is allowed; changing the search configuration requires a new monitor name.
History starts when you run the monitor. It stores the latest comparison snapshot for up to 5,000 offers, at most 7 MB, with 90-day retention. Oldest snapshots are pruned if necessary; pruned/expired offers can later appear as new. Each run's dataset preserves its emitted observations under Apify's storage retention. This is not an API for historical prices from before your first run.
Missing search results are never automatically marked removed: ordering can change and scans may be capped. Explicitly unavailable product URLs are recorded in the report. availability is the source's advertised schema value, not an independently verified stock status.
Output
| Fields | Meaning |
|---|---|
offerId, url, title | Stable source identifier and product reference |
price, currency, priceUnit, priceRaw, priceIsFrom | Displayed amount and its qualifications; null when unparseable |
priceTiers, negotiable, discountText, discountTerms, suggestedRetailPriceRaw | Advertised quantity breaks and promotions. Retail-price wording is preserved without assuming a per-item value or calculating profit |
quantity, quantityUnit, quantityRaw, quantityUnlimited | Available stock as advertised, preserving unknown/unlimited values |
minimumOrder, minimumOrderUnit, minimumOrderRaw | Detailed minimum order, without converting units |
country, countryCode, condition, brands, categories, sku | Public offer classification |
description, imageUrl, imageUrls, attachmentUrls | Product content and links; media/files are not downloaded |
vatLabel, shippingTime, paymentOptions, deliveryOptions, shippingDestinations | Seller-advertised ordering information; absent fields remain empty/null |
dataQualityNotes | Detected price/schema, VAT-description or minimum-order/unit inconsistencies |
observationType, firstSeenAt, previousSeenAt, observedAt | Snapshot/new/changed/unchanged and observation timestamps |
changedFields, changes, priceChange, priceChangePercent | Before/after comparisons; price difference is current minus previous |
detailStatus, sourceUrl, fingerprint | Extraction scope and provenance |
The default dataset contains only successfully extracted, matching output offers. Detail extraction validates the visible product identity and also handles pages without Product structured metadata. Detailed mode skips an offer if its detail page cannot be retrieved after retries; it does not silently bill a listing-only row as detailed.
Additional output links:
- OFFERS.csv: complete emitted rows with nested fields serialized as JSON. Seller-supplied strings that could execute spreadsheet formulas are prefixed with an apostrophe; original JSON values are preserved.
- CHANGES.json: emitted new/changed records. Without a monitor, snapshot records appear only in the main dataset/CSV.
- OUTPUT: counts, source requests/retries, limits, per-source coverage, missing URLs, errors, and monitor-store reference.
- FACETS: available source filters and category links. A direct-product-only run may not request discovery facets.
Limits, reliability and billing
Set both Maximum saved offers and Apify's Maximum run charge. The Actor checks the charge allowance before producing another row. A basic row triggers basic-offer at $0.001; a detailed row triggers detailed-offer at $0.003. There are no automatic start or dataset-item fees. Result billing uses durable output records and idempotent charge identifiers to recover from an interrupted/restarted run.
maxOffersToScan also counts filtered and unchanged offers, bounding work when monitoring emits few results. maxPages applies to each starting discovery URL. maxRequests includes retries and redirects. The default soft time limit is 540 seconds; increase the Apify run timeout beyond your chosen soft limit for larger exports. A run stopped by a configured cap reports limited, with its saved results intact.
Residential proxy access is built in and included in the stated prices. Temporary network, blocking and rate-limit failures retry on fresh connections. Optional Unblocker fallback is off by default and separately capped. Consistently failed sources appear in the report; a wholly failed source-access run fails clearly. A partial run can succeed with partial in the report and status message. A genuine zero-match search succeeds with zero rows and zero result charges.
Merkandi currently displays a pagination boundary on large searches. Category counts, promoted placements and ordering can also change during a run. Whole-marketplace completeness is not promised, even if a requested limited search finishes. Use narrower category/country/condition searches and inspect the coverage report.
What the public site does not provide
- Unmasked supplier contacts, addresses, personal names or private account data.
supplierContactAccessindicates masking; the Actor does not unlock these fields. - Verified seller stock, guaranteed authenticity, landed costs, verified resale margins or profit forecasts.
- A reliable standardized pack/pallet size across all sellers, or consistent VAT statements. Source wording is preserved and some contradictions are flagged, not silently resolved.
- Pre-existing price history, guaranteed publication timestamps on every offer, or guaranteed exhaustive marketplace coverage.
- Contents of attachment files: public links are returned, but documents are not parsed.
Only the public English merkandi.com site is supported in this release. Category/search, /brands/, /wholesale/ topic and direct-product URLs are accepted. Sorting and individual source filters remain subject to Merkandi's own behavior. This Actor is independent of Merkandi.
API and integrations
Use the Actor's API tab to copy a call with your own token and input. The dataset and named monitor store belong to your Apify account. You can use Apify schedules, tasks, webhooks, Make, n8n or dataset API consumers to process exports and change records. No external notification service is configured automatically.
For an issue, provide the run ID, source URL and expected field. Do not include your Apify token or Merkandi credentials.