Price From Any URL API avatar

Price From Any URL API

Pricing

from $15.00 / 1,000 validated price extracteds

Go to Apify Store
Price From Any URL API

Price From Any URL API

Extract the current public product price, currency, availability and title from any product-page URL. Returns clean JSON for agents and price pipelines.

Pricing

from $15.00 / 1,000 validated price extracteds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

What is Price From Any URL API?

Price From Any URL API extracts the current public price from product-detail URLs you already have and returns a dataset with one validated row per product page. Each row has the product title, current price, plus currency, original price, availability, brand, SKU, GTIN and image whenever the page publishes them, together with the retailer hostname, source and canonical URLs, the extraction method and the collection time. Pricing analysts, e-commerce teams, spreadsheet builders and AI agents use it as a lightweight price check across many different retailers with one input format.

Why teams use this price extraction API

  • Any retailer, one format. Paste product URLs from different stores and receive the same row shape for all of them.
  • Validated rows only. A row is saved when the page yields both a product title and a current price, so every billed row is usable.
  • Structured data first. The Actor reads a page's product markup and meta tags before falling back to a rendered page for that URL.
  • Evidence on every row. sourceUrl, canonicalUrl, extractionMethod, retrievalMethod, provenance and collectedAt show where each price came from.
  • Polite by design. maxConcurrency keeps simultaneous page requests low for sensitive retailers.

Best fit for this Actor

  • Designed for quick price snapshots of known public product pages: a sheet of competitor links, a feed of product URLs, or a single link an agent was handed.
  • Use it when you already have the URLs; for catalog search, reviews or marketplace discovery, start with a marketplace-specific Actor.
  • When you also need your own price compared against competitors with gap and alert fields, continue with Competitor Price Monitor — Wiser Alternative.
  • To find more sellers of the same product before you check prices, start with Google Shopping Scraper — Prices, Sellers & Deals and then pass the offer URLs here.

What people and AI agents ask this Actor to do

What does this product cost right now on the retailer's site? Check today's price for these twenty competitor product links. Is this item in stock, and what is its SKU?

RequestInput to send
One product link{"urls": ["https://www.nike.com/t/air-force-1-07-mens-shoes-WrLlWX/CW2288-111"]}
A competitor list{"urls": ["...", "...", "..."], "maxConcurrency": 3}
A sensitive retailer{"urls": ["..."], "maxConcurrency": 1}

A pricing analyst at a sporting-goods retailer starts with a sheet of thirty competitor product URLs for the shoes her store sells. She sends them in urls with maxConcurrency at 3 and schedules the run each morning. Each row returns productTitle, price, retailer and collectedAt. Her script appends the rows to a price log, compares today's price with yesterday's for each canonicalUrl, and feeds any drop larger than five percent into a Slack alert for the merchandising team. URLs that return no row go to a weekly review list.

Input

{
"urls": [
"https://www.nike.com/t/air-force-1-07-mens-shoes-WrLlWX/CW2288-111"
],
"maxConcurrency": 3,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
FieldTypeWhat it controls
urlsarrayPublic HTTP or HTTPS product-detail URLs. Required
maxConcurrencyintegerSimultaneous page requests. Default 3
proxyConfigurationobjectApify Proxy settings; residential by default

Output

FieldWhat it contains
productTitle, priceProduct title and current price, validated together
currency, originalPrice, availabilityCurrency code, pre-discount price and stock signal when the page publishes them
brand, sku, gtin, imageUrlProduct identifiers and image when published
retailerRetailer hostname
sourceUrl, canonicalUrlInput URL and the page's canonical URL
extractionMethod, retrievalMethodHow the price was read, such as json_ld or meta_html, and static_html or rendered_page
provenance, collectedAt, resultIdEvidence label, collection time and row ID
{
"resultId": "0:https://www.nike.com/t/air-force-1-07-mens-shoes-DZejrQoC/CW2288-111:2026-10-01T01:47:20.504Z",
"productTitle": "Nike Air Force 1 '07Men's Shoes",
"price": 115,
"currency": null,
"originalPrice": null,
"availability": "unknown",
"brand": null,
"sku": null,
"gtin": null,
"imageUrl": "https://static.nike.com/a/images/t_default/b7d9211c-26e7-431a-ac24-b0540fb3c00f/AIR+FORCE+1+%2707.png",
"sourceUrl": "https://www.nike.com/t/air-force-1-07-mens-shoes-DZejrQoC/CW2288-111",
"canonicalUrl": "https://www.nike.com/t/air-force-1-07-mens-shoes-DZejrQoC/CW2288-111",
"retailer": "www.nike.com",
"extractionMethod": "meta_html",
"retrievalMethod": "static_html",
"collectedAt": "2026-10-01T01:47:20.504Z",
"provenance": "public_product_page"
}

Pages with full product markup also fill currency, availability, brand, sku and gtin; the row above came from a page that published only its title, price and image in meta tags. Each run also writes OUTPUT and RUN_SUMMARY records to the default key-value store with the run outcome, such as COMPLETE, PARTIAL or VALID_EMPTY.

Pricing

This Actor uses Pay per event plus Apify platform usage. Each run charges one Actor Start event and one Validated price extracted event per product row saved with both a title and a current price. URLs that yield no validated row carry no price charge. Platform usage, including residential proxy traffic, is billed on top at Apify's standard rates. The live Pricing tab on this page shows the current event prices.

Worked example: ten product URLs where eight return a validated price cost eight Validated price extracted events plus one Actor Start event and the run's platform usage. Keep early batches small when you try a new retailer, and set a maximum charge per run in the run options.

API example

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~price-from-url-api/run-sync-get-dataset-items?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://www.nike.com/t/air-force-1-07-mens-shoes-WrLlWX/CW2288-111"], "maxConcurrency": 1}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("khadinakbar/price-from-url-api").call(run_input={
"urls": ["https://www.nike.com/t/air-force-1-07-mens-shoes-WrLlWX/CW2288-111"],
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["retailer"], row["productTitle"], row["price"], row.get("currency"))

Use with AI agents (MCP)

Connect the Actor through Apify MCP in Claude, ChatGPT or Cursor and ask:

Check the current price of these three product links and tell me which is cheapest. Include the retailer and when each price was collected.

The agent passes the links in urls, reads rows with get-dataset-items, and compares price. It should report currency when present, cite canonicalUrl and collectedAt as provenance, and read OUTPUT.outcome to tell how many URLs returned a validated price. Each saved row is one event, so cost scales with the number of URLs that yield a price.

Best results

Starting situationHelpful actionExpected outcome
A product pageUse the product-detail URL, with variant parameters if the price differs by size or colorThe price for that exact product
A new retailerStart with one or two URLs at maxConcurrency 1A quick read on how that site's pages extract
Mixed currencies across storesGroup rows by retailer and currency before comparingLike-for-like comparisons
A daily price checkSchedule the same urls list and compare by canonicalUrlA simple price history
A URL with no rowConfirm it is a single product page, not a category or landing pageA validated row on the next run

Builder's note

I designed the billing around a validated pair, a product title and a current price, because a price without its product, or a marketing page with a stray number, is worse than no row at all. I chose to read structured product data and meta tags before rendering the page, which keeps most checks fast and saves the heavier browser path for pages that need it.

FAQ

Which sites does it work on?

Public product-detail pages on retailer websites. Pages with standard product markup give the fullest rows.

Does it search for products?

It works from URLs you provide. To discover products first, use a marketplace or shopping search Actor.

How fresh is the price?

Each row is read live during the run, and collectedAt records the exact time.

Responsible use

This Actor reads public product pages. Use it in line with each retailer's terms of service, keep maxConcurrency modest, and run it on pages you are entitled to access. Brand names in the output belong to their owners, and this independent Actor is not affiliated with any retailer. For questions, open a ticket in the Issues tab.