OpenCart Product Price & Stock Scraper & Monitor avatar

OpenCart Product Price & Stock Scraper & Monitor

Pricing

from $0.25 / 1,000 opencart price and stock records

Go to Apify Store
OpenCart Product Price & Stock Scraper & Monitor

OpenCart Product Price & Stock Scraper & Monitor

Collect current OpenCart product prices and stock status, then identify price and availability changes across runs.

Pricing

from $0.25 / 1,000 opencart price and stock records

Rating

0.0

(0)

Developer

Andy Besos

Andy Besos

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

OpenCart Product Price & Stock Scraper & Monitor collects public OpenCart product prices and availability, then labels price drops, increases, sell-outs and returns to stock. Enter a public OpenCart storefront URL to discover products, or paste a product URL for one focused lookup. The output is a structured Apify Dataset that can be exported as JSON, CSV or Excel.

No OpenCart admin account or OpenCart API key is required. The Actor reads pages already visible to shoppers through direct HTTP. An Apify proxy is optional for shops that block the default network route.

Why use this price and stock feed?

  • Keep current price, regular price, sale price, displayed currency symbol and explicit availability in separate fields.
  • Use a stable product ID or review fingerprint so scheduled runs can compare records.
  • Get a run summary with requested, successful, failed and incomplete targets, plus exported record counts.
  • Run several OpenCart targets in one job. If one target fails, other targets can still succeed.
  • Send the dataset to Apify schedules, webhooks or your own API client.

The Actor retries temporary network errors and logs failures per target. It does not invent exact stock counts when a shop only displays “In Stock.” A shop with customized themes may expose fewer fields than the default OpenCart layout.

Pricing

Pay per event: $0.001 per run plus $0.00025 per exported price and stock record. The example totals below are Actor event charges for 256 MB runs:

Exported recordsActor event charge
1$0.00125
100$0.026
1,000$0.251
10,000$2.501

The exact formula is $0.001 + (exported records × $0.00025). Apify platform storage or data transfer charges can be separate. A target that returns no matching records still incurs the run start event; choose a known product for your first test.

How to use this Actor

Paste a homepage such as https://opencart.ridly.io/ to discover product links through OpenCart categories and pagination. A direct product URL such as https://opencart.ridly.io/index.php?route=product/product&product_id=40 is faster and ideal for a focused check. Hostnames without a scheme are accepted and normalized to HTTPS.

Quick start with the prefilled public product:

{
"targets": [
"https://opencart.ridly.io/index.php?route=product/product&product_id=40"
],
"maxItemsPerTarget": 1
}

For a store-wide scan, set the export cap to zero and raise page limits if your shop is large:

{
"targets": [
"https://opencart.ridly.io/"
],
"maxItemsPerTarget": 0,
"maxListingPages": 0,
"maxProductPages": 0
}

The prefill requests one product and exports one record. For a storefront scan, maxItemsPerTarget limits the Dataset output, while snapshots compare every record fetched within the listing and product page limits.

Monitor new, updated and removed products

Use the same monitorId and target URLs on repeated scheduled runs. The first run labels records “new”; later runs label them “updated,” “unchanged,” or “removed.” changedFields lists fields that changed. For product changes, oldValues and newValues show the before and after values; the price and stock Actor also emits eventType values such as price_drop and sold_out.

{
"targets": [
"https://opencart.ridly.io/index.php?route=product/product&product_id=40"
],
"monitorId": "my-opencart-watch",
"maxItemsPerTarget": 0,
"onlyChangesSince": "2026-09-01T00:00:00.000Z"
}

Omit onlyChangesSince to include unchanged rows. A removed event is emitted only when a complete crawl confirms the record disappeared. If a listing, product or review page limit truncates the crawl, the Actor keeps prior records and reports the target as incomplete in SUMMARY to avoid false removal alerts.

API example

curl -X POST "https://api.apify.com/v2/acts/Clintsa~opencart-price-stock-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targets":["https://opencart.ridly.io/index.php?route=product/product&product_id=40"],"maxItemsPerTarget":1}'

For larger shops, start the run asynchronously and read its Dataset when it finishes.

Input options

FieldTypePurpose
targetsURL listOne or more OpenCart shop homepages, category pages or product pages.
maxItemsPerTargetintegerExport cap per target; 0 exports all scanned records. The prefill is 1.
maxListingPagesintegerMaximum category and pagination pages per storefront; 0 removes the cap.
maxProductPagesintegerMaximum product detail pages per storefront; 0 removes the cap.
monitorIdstringPersistent name for snapshots across scheduled runs.
onlyChangesSinceISO timestampEmit only changes detected since the given time.
requestDelayMillisintegerOptional pause between requests.
useApifyProxybooleanOptional Apify Proxy fallback for blocked storefronts.
proxyConfigurationobjectProxy settings when the fallback is enabled.

Output

Selected fields from an illustrative price and stock record after a repeat run (unchanged records appear when onlyChangesSince is omitted):

{
"target": "https://opencart.ridly.io/index.php?route=product/product&product_id=40",
"itemId": "40",
"productId": "40",
"name": "iPhone",
"price": 123.2,
"regularPrice": 123.2,
"availability": "in_stock",
"inStock": true,
"productUrl": "https://opencart.ridly.io/index.php?route=product/product&language=en-gb&product_id=40",
"sourceUrl": "https://opencart.ridly.io/index.php?route=product/product&product_id=40",
"scrapedAt": "2026-09-30T12:05:00.000Z",
"changeType": "unchanged",
"eventType": "unchanged",
"changedFields": [],
"oldValues": {},
"newValues": {},
"changeDetectedAt": "2026-09-30T12:00:00.000Z",
"firstSeenAt": "2026-09-30T12:00:00.000Z",
"lastSeenAt": "2026-09-30T12:05:00.000Z"
}

Every run also writes a SUMMARY record in its default key-value store. It includes scan counts, change counts, completion time and whether Apify Proxy was used.

Use cases

  • Price and stock tracking supports competitor monitoring, replenishment research and sale detection.
  • Create a repeatable feed from several OpenCart shops without logging in to their administration panels.
  • Compare public product information between two scheduled observations.
  • Export a small focused sample for a spreadsheet or an automated downstream job.

FAQ

Does this need an OpenCart API key?

No. It requests public storefront and product pages. An Apify account is needed to run the Actor itself.

Can it scan a whole OpenCart shop?

Yes, when public category and product links are discoverable. Set page limits to zero for complete coverage and use a modest request delay on large shops.

Why can a result have no exact inventory count?

Most OpenCart storefronts publish only an availability label. The Actor leaves inventoryLevel empty unless a public count is available.

What happens when a shop blocks requests?

The target is logged as failed. You can enable Apify Proxy as a network fallback and retry. A shop's own policies still apply.

How are removals decided?

A record must have appeared in a prior snapshot and be absent from a complete later scan using the same monitorId and target scope.

Limitations and responsible use

Only public storefront content is returned. Store themes, extensions, language settings, cookie requirements and site defenses vary, so a customized shop may need adaptation. Prices are displayed shopper prices; tax, shipping and variant-specific totals may differ. Review dates are preserved as displayed, without inventing a timezone. Follow each shop's robots.txt, terms and applicable law, and avoid excessive request rates.

Support

Use the Issues tab on this Actor's Store page. Include the run ID, the target URL and the fields you expected so a failing theme or route can be reproduced.