Competitor Price Position Snapshot
Pricing
from $17.50 / 1,000 product target checkeds
Competitor Price Position Snapshot
Compare owned and competitor product pages for visible price position, sale badges, shipping text, ratings, availability, and offer presentation.
Pricing
from $17.50 / 1,000 product target checkeds
Rating
0.0
(0)
Developer
junipr
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Compare competitor product/collection pages for visible price position, sale badges, shipping text, ratings, availability, and offer presentation against owned products.
What it does
Compares mapped public owned and competitor offers using visible or supplied prices, currency, sale, shipping, rating, and availability evidence.
The actor emits one row per owned-versus-competitor match. Every dataset row uses the declared dataset schema, includes source provenance and a scan timestamp, and is written only after every applicable pay-per-event charge is accepted.
Typical uses
- Compare competitor product prices
- Snapshot price position for mapped products
- Export sale and shipping signals
- Find pricing gaps against competitors
- Build ecommerce price research sheet
Input
Use public HTTP(S) URLs or deterministic htmlInputs. URL fetching rejects localhost, loopback, link-local, and private-network destinations. allowedDomains can further constrain live fetches.
startUrlssitemapUrlshtmlInputsallowedDomainsmaxPagesmaxDepthincludeEvidenceincludeRawSnapshotsrequestDelayMstimeoutMsuserAgentModeownedProductUrlscompetitorProductUrlsproductMatchMappriceRecordscollectionUrlspriceRulesincludeShippingSignalsmaxProductsmaxCompetitorsmaxPriceRecordsmaxSnapshotsmaxChargeUsdincludeReport
The safety caps named in maxProducts, maxCompetitors, maxPriceRecords, maxSnapshots, timeoutMs are enforced in addition to maxChargeUsd. A value of 0 for maxChargeUsd is a hard zero budget: the actor exits before the first paid operation.
Minimal deterministic example
{"htmlInputs": [{"sourceUrl": "https://shop.example/public-page","html": "<html><head><title>Public page</title></head><body><h1>Public evidence</h1></body></html>"}],"includeEvidence": true,"includeReport": true,"maxChargeUsd": 75}
The prefilled input remains deliberately small so Apify automated quality runs finish quickly. For production use, replace the example source with public pages you are authorized to access.
Dataset output
sourceUrlsourceTypepageTitlerecordTyperecordNameissueCodeseverityevidenceSnippetrecommendationcanonicalUrlhttpStatusscannedAtmatchGroupIdproductNamecompetitorNameownedUrlcompetitorUrlownedPricecompetitorPricepriceDifferencepricePositioncurrencysaleSignalshippingSignalratingSignalavailabilityComparison
Reports are also written to key-value storage:
competitor-price-position-snapshot-summary-report.mdcompetitor-price-position-snapshot-records.csvcompetitor-price-position-snapshot-issues.jsoncompetitor-price-position-snapshot-evidence-samples.jsoncompetitor-price-position-snapshot-run-metadata.json
When includeRawSnapshots is true, bounded raw HTML snapshots are stored separately. Raw snapshots are off by default.
Pay-per-event pricing
Platform-usage pass-through is off. Prices are the locked fixed-inclusive values for this actor.
| Event | Price | Meaning |
|---|---|---|
actor-start | $0.08 | Actor Start |
product-target-checked | $0.0175 | Product Target Checked |
competitor-price-record-checked | $0.0175 | Competitor Price Record Checked |
price-position-signal-detected | $0.0345 | Price Position Signal Detected |
executive-report-generated | $0.85 | Executive Report Generated |
Charging rules:
actor-startmust be accepted before fetching or rendering begins.- Page/target events are deduplicated per source.
- Record and finding events fire only when the corresponding output exists.
- Report output is written only after the report event is accepted.
- Partial charges and Apify charge-limit responses stop the run before additional paid output.
- Store discounts are tracked as a separate Console configuration requirement; this source does not claim they are already applied.
Evidence and failure behavior
- Price difference is competitor price minus owned price.
- Missing sides and currency mismatches are explicit diagnostics.
- The actor does not access private pricing, accounts, carts, or restricted data.
A fetch failure, browser failure, blocked page, missing record, or incomplete match produces a bounded diagnostic row when possible. It never invents a successful extraction. Evidence can be omitted with includeEvidence: false.
Local verification
pnpm --filter @junipr/competitor-price-position-snapshot buildpnpm --filter @junipr/competitor-price-position-snapshot testpnpm --filter @junipr/competitor-price-position-snapshot smoke
The tests cover strong, weak, unavailable, comparison, and cap fixtures; schema equality; pricing metadata; accepted/partial/limited charges; zero budget; and report generation.
Limitations
- Results reflect the public source at the scan time and may change later.
- Site markup changes can require selector/parser maintenance.
- The actor does not bypass authentication, CAPTCHAs, robots restrictions, or access controls.
- Legal, tax, pricing, SEO, merchandising, and marketplace decisions remain the user's responsibility.