PackPrice — Pack Size & Unit Price Normalizer
Pricing
$20.00 / 1,000 normalized offers
PackPrice — Pack Size & Unit Price Normalizer
Compare product offers by price per kg, litre or item. Convert multipacks like 6 x 500 mL into 3 L from JSON or Apify datasets. Unclear sizes are flagged; pay only for normalized offers.
Pricing
$20.00 / 1,000 normalized offers
Rating
0.0
(0)
Developer
ColegaMedico
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
Turn package sizes into comparable unit prices. Normalize metric weights, volumes and item counts from structured offers or an existing Apify dataset. No website crawling, API key for AI, or probabilistic quantity guessing.
Example: Water 6 x 500 mL at $18 is 3 L at $6/L. Water 1 L at $7 is $7/L. The cheaper unit price is identified only when you explicitly assign both offers to the same equivalence group.
Input
{"offers":[{"id":"a","title":"Water 6 x 500 mL","price":18,"currency":"USD","groupId":"same-water"},{"id":"b","title":"Water 1 L","price":7,"currency":"USD","groupId":"same-water"}]}
Alternatively, use {"datasetId":"YOUR_DATASET_ID"}. The run must have permission to read the dataset. Maximum 1,000 rows / 2 MB per run; larger datasets are rejected rather than truncated.
Required per offer: id, title, numeric price, ISO currency. Optional: groupId, quantity, unit, packCount. Explicit quantity is per pack, multiplied by packCount (default 1). It must not contradict quantities in the title. Extra unrecognized fields should be removed before submission.
Results
Each row includes status, totalQuantity, normalizedUnit (L, kg, item), unitPrice, evidence and reason. Unclear quantities return ambiguous or unsupported; they never become guessed numbers. Output files in the run's key-value store:
OUTPUT: results, comparisons and run summary.COMPARISONS: rankings within your group + currency + measurement dimension.SUMMARY: delivered counts, charged counts and budget skips.results-<batch-key>: durable arrays of results withresultKey, including recovery after an interrupted run. Older builds use individualresult-<key>receipts.
No currency conversion. No automatic product equivalence or clinical substitution. Price means the price you supply; shipping, taxes, discounts and deposits are not inferred. Imperial sizes, mixed bundles, dosage/nutrition contexts, conflicting identifiers and unrecognized grammar are intentionally rejected.
Pricing and recovery
Intended paid configuration: $0.02 per normalized offer. The Apify Pricing tab is authoritative; a private, unmonetized test is not a sale. No paid event is created for rejected or duplicate input. Set maxTotalChargeUsd when starting a paid run. Results beyond your budget are skipped and counted explicitly.
A durable receipt is stored before charging. Each charge uses a stable provider idempotency key. Resurrecting the same run with unchanged input, build, billing mode and buyer budget recovers results without charging again. A new run is a new purchase. Internal duplicates use the same receipt; conflicting versions of the same offer ID are rejected. When an interrupted run lacks OUTPUT, saved results-* batch receipts remain available. A batch reaches the dataset after its charges complete; a failed batch is safely retried with the original charge keys.
Integrations and privacy
Use the Apify API, schedules, or an existing automation. Map Google Shopping scraper fields (title, priceNumeric, currency) to offers and supply your own equivalence groups. PackPrice is independent and does not claim a partnership with other Actors.
Inputs are processed inside your Apify run. No customer data is sent to an external language model or arbitrary URL. Data follows your Apify storage retention settings. Support is available through the Actor's Issues tab; include a minimal non-confidential failing example.