RevZilla Product Scraper — Prices & Stock
Pricing
from $9.60 / 1,000 revzilla products
RevZilla Product Scraper — Prices & Stock
Extract RevZilla product prices, stock, SKU variants, ratings, and part numbers from product or category URLs for catalog and price monitoring.
Pricing
from $9.60 / 1,000 revzilla products
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
RevZilla Product Scraper
Extract current public RevZilla catalog products into structured JSON for motorcycle gear price monitoring, SKU research, stock checks, and catalog comparisons. Supply product pages or public category pages. The Actor saves one record per unique product, with its published variants grouped inside that record.
RevZilla product data
| Field | Meaning |
|---|---|
productId, url, name | Stable product identity and canonical product URL |
brand, category | Published brand and catalog category path |
description | Published short description |
priceMin, priceMax, currency | Range across published variant offers |
availability | Distinct published availability states |
rating, reviewCount | Published aggregate rating and review count |
imageUrls | Image references; no downloaded images |
variantCount, variants | Deduplicated public SKU variants |
scrapedAt | UTC extraction timestamp |
Each variant contains sku, color, style, storeSku, manufacturerPartNumber, price, currency, availability, and availabilityText. Fields the source does not publish remain null. Variants may include out-of-stock offers. Product pricing is the range of source-published offers, rather than a selected checkout price. Ratings may be shared across models by RevZilla.
Product URLs and category URLs
Product pages provide detailed catalog records. Category pages discover product links and then fetch those product pages. Category cards are not billed or emitted as incomplete product records. Product IDs deduplicate across category and direct URL inputs. URLs selecting different SKUs normalize to a single product, whose variants are returned together.
Default input fetches the Shoei RF-1400 Helmet page and allows up to five results. It usually returns one product because it starts from one product page. Missing input uses this same example. Explicitly empty startUrls is rejected with a correction in the run summary.
{"startUrls": [{"url": "https://www.revzilla.com/motorcycle/shoei-rf-1400-helmet"}],"maxResults": 1,"includeVariants": true}
For category discovery:
{"startUrls": [{"url": "https://www.revzilla.com/motorcycle-helmets"}],"maxResults": 5,"maxPages": 1,"maxRequests": 15,"maxRunSeconds": 180}
A category URL with ?page=2 starts at its second page. maxPages limits pages per starting category. The result cap, request budget, and runtime can end pagination earlier. Multiple categories share the global result cap.
Limits and predictable execution
startUrls accepts 1–20 public RevZilla HTTPS URLs. maxResults accepts 1–50 products; default 5. Verified Apify free-plan runs are capped at five products even if a higher limit is requested. Paid runs retain the requested ceiling. An unknown local plan does not trigger the free cap. The effective ceiling appears in OUTPUT and the terminal status.
maxPages accepts 1–5 category pages per starting URL, default 1. maxRequests counts HTTP attempts, including retries, and accepts 1–80, default 25. maxRunSeconds accepts 10–240 seconds, default 180. The cloud timeout can impose a shorter duration. The scraper also stops at 100 MB of response bodies or after two consecutive systemic failures. It uses sequential requests, a minimum delay of approximately one second, and a 20-second request timeout. These limits bound work independently of the PPE spending cap.
Set includeVariants to false to omit the nested variant payload. The variants field becomes an empty array while variantCount, price range, and aggregate availability remain present. This does not change the billing unit.
Output and exports
The default dataset contains products only and supports JSON, CSV, Excel, and other Apify dataset exports. Nested variant arrays are most useful in JSON. The products table highlights name, brand, prices, currency, availability, ratings, variant count, and source URL. The output panel links to the dataset and the OUTPUT key-value record.
OUTPUT records outcome, deliveredRecords, resultEvents, startEvents, stopReason, effectiveLimit, freePlanCap, requests, responseBytes, routes, warnings, and elapsed seconds. Possible outcomes are DATA, PARTIAL, EMPTY, BLOCKED, REJECTED, and FAILED. A real missing page can be empty; a denied page is blocked. Unrecognized markup is an extraction failure, never a fabricated fallback product. Valid partial products remain available after later failures.
Pay-per-event pricing
One saved product is one automatic apify-default-dataset-item event. All returned SKU variants are included. There is also an automatic apify-actor-start fee. No manual synthetic charges or separate variant events are used. Failed, missing, and rejected products do not create product events; the start fee still applies. Platform-usage pass-through is disabled.
| Event | FREE | BRONZE (2.5% off) | SILVER (5% off) | GOLD (20% off) |
|---|---|---|---|---|
| Actor start | $0.005 | $0.005 | $0.005 | $0.005 |
| Saved product | $0.012 | $0.0117 | $0.0114 | $0.0096 |
The start fee has a $0.005 floor in every tier. At list pricing, one product totals $0.017 and five products total $0.065. At GOLD pricing those totals are $0.0146 and $0.053. Free-plan billing follows Apify's platform rules. These tables describe configured event prices, not a guarantee of creator revenue.
The Actor checks the SDK's remaining event allowance before requests and before every write. Set the run's maxTotalChargeUsd option in Apify Console or API to constrain events. A charge cap does not constrain platform compute or an external proxy invoice, so request and runtime bounds remain necessary. Initial pricing uses conservative HTML-transfer allowances and is verified against cloud costs before handoff.
API and AI-agent use
Call muhammadafzal/revzilla-product-scraper with the same JSON inputs from Apify Console, the Apify API client, or an Apify Actor integration. Configure a spending cap and timeout in run options. Poll the run, inspect OUTPUT, then read its default dataset. Do not interpret a successful container alone as evidence that products were delivered. Consume nullable fields as unavailable information.
Access and scope
Extraction uses public HTML, embedded JSON-LD, and the public SKU table. US network routing is managed privately by the operator, with coherent request headers and cookies. Inputs never accept proxy credentials or user sessions. Search URLs are excluded because RevZilla's robots policy disallows search. Account, cart, checkout, API, editorial, and OEM pages are outside the contract. Reviews are aggregate counts and ratings only; individual review text, private inventory, purchases, and guaranteed vehicle fitment are unsupported.
The Actor follows only allowlisted public RevZilla destinations, including redirects. It does not solve CAPTCHAs, log into accounts, or bypass paywalls. Use it only where you have the right to collect and use the information, and respect RevZilla's terms and applicable requirements. This independent scraper is not affiliated with RevZilla. Source prices, stock, and catalog structure can change between runs.
Operator development
Run npm ci, npm run check, and npm test from this Actor directory. Use bounded apify run --purge cases for local validation. Configure the current user's provider credentials as private Actor environment secrets. Local storage and .env files are excluded from deployment. Cloud build, billing, output, metadata, privacy, and final matrix evidence are documented separately in VALIDATION.md after verification. Publication remains an owner action.
For private route canaries, operators can write OPERATOR_ROUTING with a predefined route in a canary run's default key-value store before resuming it. It accepts only residential-us, mobile-us, apify-residential-us, or direct; credentials and proxy endpoints remain server-side. Ordinary runs use automatic routing without this record. Apify snapshots version environment variables when building, so changing those variables requires a new build.