Noon Scraper: Products, Prices, Sellers, Stock
Pricing
from $0.08 / 1,000 products
Noon Scraper: Products, Prices, Sellers, Stock
Scrape noon.com searches, categories, brands, bestseller lists, links or SKUs for the UAE, Saudi Arabia, Egypt and four more stores, and noon Minutes at your delivery point. Get price, was price, discount, rating, seller, stock and every seller offer. No login; JSON, CSV or Excel; pay per product.
Pricing
from $0.08 / 1,000 products
Rating
0.0
(0)
Developer
Automation Craft
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Noon Scraper: Products, Prices, Sellers, Stock
Noon scraper for noon.com, the Gulf's home grown marketplace: get every product of a noon search, category, brand page, bestseller list or product link as clean rows with price, was price, discount, rating, seller and seller rating, stock left, express delivery, delivery estimate, best seller rank and bank offers, for the UAE, Saudi Arabia, Egypt, Kuwait, Qatar, Bahrain and Oman, in English or Arabic, and noon Minutes quick delivery searches at the delivery point you choose (UAE and Saudi Arabia, Egypt at its one point: the dark store's price, pack size, stock and order limit). On request each product's page adds full specifications, model number, colour, description, variants and every seller's offer with its exact stock, warranty, return policy and delivery date. No login, no cookies of yours, no API key. You pay per product delivered; misses, repeats and filtered products are free.
Use it to check your own and other sellers' prices, buy box and stock on noon, to export a noon category to Excel, to follow best seller ranks and deals on a schedule, or to feed a Gulf price comparison or price history sheet of your own.
Quick start
- Open the Actor's Input tab.
- Type Search words (iphone 17, perfume, air fryer), pick Categories (smartphones, laptops, fragrance ...), name Brands (Apple, Samsung), paste noon.com links (a search, category, brand, bestseller or product page), or give SKUs (N70211556V). For noon Minutes, type noon Minutes search words (milk, eggs) and optionally a delivery point (latitude and longitude).
- Pick the Store (UAE by default; Saudi Arabia, Egypt, Kuwait, Qatar, Bahrain, Oman) and the Language (English or Arabic). Links carry their own store.
- Optionally set noon's own filters: price range, minimum rating, sellers, express or supermall delivery, deals, lowest price in 30 days, new arrivals, delivery today, and any other filter of noon's panel such as "Colour: Black" or "Storage: 256 GB". Pick an order.
- Set Max products per search (default 100) and turn on Product details for the full product page.
- Click Start. Download the results as JSON, CSV or Excel, or read them through the Apify API.
What you get
Product rows (the Product event)
One row per noon product (SKU) and store. The fill column is measured on 781 product rows of the platform test runs of 2026-10-28 (matrix t6 on build 0.1.13: searches, categories, brand and bestseller pages, SKUs and links, all seven stores, English and Arabic; the 12,000 row price band split is left out so one category does not weigh for all); a field noon shows only on some products (a sale price, a best seller rank, a low stock note) is filled only there.
| Field | What it is | Example | Fill |
|---|---|---|---|
sku | noon's product code | N70283855V | 100% |
name | product name, in the run's language | Galaxy S26 Ultra Dual SIM Black 12GB RAM 256GB 5G - Middle East Versio | 100% |
brand | brand as noon shows it | Samsung | 93% |
brandCode | noon's brand code | samsung | 100% |
price | what a buyer pays now | 406.09 | 100% |
wasPrice | the struck price beside a sale price | 600.36 | 57% |
discountPercent | discount, rounded | 32 | 57% |
currency | AED, SAR, EGP, KWD, QAR, BHD or OMR | BHD | 100% |
priceUsd | price in US dollars (pegged currencies only) | 1080.03 | 96% |
rating | average rating out of 5 | 4.7 | 93% |
ratingCount | number of ratings | 16867 | 93% |
seller | seller of the offer noon shows first | Famous Store GT | 100% |
sellerRating | the seller's rating | 4.8 | 96% |
sellerRatingCount | ratings of the seller | 186 | 96% |
sellerPositivePercent | positive seller ratings, percent | 91 | 96% |
isBuyable | can be bought now | true | 100% |
stockLeft | units left when noon shows a low stock note | 5 | 19% |
expressDelivery | fulfilled by noon (Express) | true | 100% |
supermallDelivery | supermall delivery within the hour | false | 100% |
freeDelivery | free delivery | false | 100% |
deliveryEstimate | noon's delivery text as served, with its bold tags | Get it by 3 - 4 Nov | 88% |
deliveryEstimateText | the same text without the tags | Get it by 3 - 4 Nov | 88% |
bestSellerRank | best seller rank | 3 | 19% |
bestSellerCategory | the category of that rank | Smartphones | 17% |
soldRecently | units noon says sold recently ("6300+ sold recently"; on 2 percent of 805 rows of 2026-10-16, none of these 781) | 0% | |
dealTag | deal tag (Deal, Mega Deal ...) | 27% | |
nudges | noon's notes (Lowest price in a year ...) | #3 in Smartphones | 86% |
bankOffers | bank and coupon offers with terms | {...} | 85% |
keySpecs | key specifications from the listing | {...} | 64% |
image | main image | https://f.nooncdn.com/p/pzsku/Z14441105AC6E5956EAB6Z/45/_/17... | 100% |
images | image gallery | (list of image links) | 100% |
video | product video | https://a.nooncdn.com/cms/pages/20260305/43bd4882343620a486d... | 14% |
url | product page | https://www.noon.com/bahrain-en/galaxy-s26-ultra-dual-sim-bl... | 100% |
source names the input that found the row (search words, a listing path, a SKU or a link), page, position and totalResults
place it in noon's results. With includeRaw the row also carries raw, the object noon sent, every key as noon names it.
Every text is delivered exactly as noon serves it (names, nudges, delivery texts, descriptions, specifications, reviews, warranty and
return texts), never rewritten; the two copies with noon's HTML tags removed are named as such (deliveryEstimateText,
details.descriptionText).
noon Minutes rows (the Product event)
noon Minutes is noon's quick delivery from dark stores in the UAE, Saudi Arabia and Egypt. Its stock and order limits are those of the
dark store that serves the delivery point, so a search there is read at the point you set (deliveryLatitude, deliveryLongitude;
left out, noon's own default point: Downtown Dubai in the UAE, Riyadh in Saudi Arabia; Egypt's noon Minutes serves one point in Cairo
and takes no other). Each item is one row, billed as a Product, with channel
minutes and its own fields:
Fill measured on the 360 noon Minutes rows of the platform test runs of 2026-10-28 (matrix t7m on build 0.1.14: milk, rice and bread in Dubai, Abu Dhabi and Jeddah, English and Arabic):
| Field | What it is | Example | Fill |
|---|---|---|---|
sku, offerSku | noon's product code, and the item as noon Minutes serves it | ZB66FEAC2410E49684126Z, ZB66FEAC2410E49684126Z-1 | 100% |
name, subtitle | as served | Fresh Milk Full Fat | 100%, 1% |
brand, brandCode | as served | Almarai, almarai | 89%, 92% |
price, listPrice | what a buyer pays now, and noon's list price | 12.5, 13.5 | 100% |
wasPrice, discountPercent | the struck price beside a sale, the discount noon shows | 13.5, 7 | 42%, 37% |
packSize | the pack size shown | 2L | 90% |
isBuyable, availability, notBuyableReason | in stock at that dark store | true | 100% |
maxOrderQuantity | the most one order may hold (it differs from dark store to dark store) | 15 | 100% |
volume, weight | noon's own logistics figures for the item, as served (noon states no unit; weight is 0 on some items) | 3318, 0.1 | 100% |
labels, offerText, offerQuantity | noon's labels (Buy 2 for 1.60, Exclusive, Buy Again ...) and offer notes, as served | {...} | 99%, 1% |
isSponsored, sponsoredText | a paid placement among the results, marked "Ad" by noon (2 of the 360) | false | 100% |
comboItems | the items of a bundle (SKU, name, quantity, pack size, order limit, volume, weight) | [...] | 9% |
categoryCode, sellerId, ageCheckRequired | noon's category code, partner id, age check flag | milk | 90%, 100%, 100% |
image, images, imageKeys | pictures | https://f.nooncdn.com/p/pzsku/... | 100% |
darkStore, deliveryPoint | the dark store whose stock the row shows, and the point noon answered for | W00809697AE, {"lat": 24.47, "lng": 54.35} | 100% |
url | the item's noon Minutes page | https://minutes.noon.com/uae-en/now-product/ZB66FEAC2410E49684126Z-1/ | 100% |
A point noon Minutes does not deliver to is answered by noon for its default point; the Actor compares the point noon answered for with the one you set and delivers nothing from such a page (a free status row names both). noon Minutes orders by recommendation or by price (both ways) and takes none of this Actor's filters, so a run that asks for one gets a free row for its noon Minutes searches. Its items have no product detail add-on.
Product details (the Product detail event, optional)
With Product details on, the product page of each delivered row is read and nested in the row as details:
| Field | What it holds |
|---|---|
specifications, highlights, description, descriptionText | every specification noon lists (name, code, value), the feature bullets, the long description as served and without tags |
modelNumber, modelName, colour, weight | the specifications buyers ask for by name, read by noon's own codes (null when the page does not list them) |
breadcrumbs, breadcrumbTrail, categoryCode, categoryPaths | where noon files the product: the names, and each level's name, path and link |
variantGroups | the product's other versions (colour, size, storage ...) with their SKU, link and whether each is available |
variants[].offers[] | every seller's offer: seller, seller code, seller rating and rating count, positive and "item as shown" percent, seller badges and years on noon, price, was price, discount, exact stock, stock warning, buyable, fulfilled by noon, supermall, warranty, extended warranty, returnable and return policy, delivery text, date, time slot and expiry, shipping fee note, bank offers, payment and cashback offers, installments, offer badges, add to cart and buy now state |
buyBox, offerCount, sellerCount, lowestOfferPrice, highestOfferPrice, stockTotal | the offer noon shows first and the spread of all offers |
rating, ratingCount, reviews | the rating summary and the up to five reviews on the page (rating, title, text, author, date) |
images, videos, frequentlyBoughtTogether, bestSellerList, newerModelSku, sizingGuide, shippingNotes | media, the products noon bundles, the bestseller list of its category, a newer model when noon names one |
Measured on the 13 product pages of matrix t6 (air fryers, phones and a laptop; UAE and Saudi Arabia): modelNumber and colour 13 of
13, modelName 12, weight 2 (most pages list no weight), breadcrumbTrail 13, description 11, reviews 9. The row's price,
seller, stock, rating, brand and delivery flags are then the page's own (the page is newer than the listing; a value the page does not
carry is empty on the row, never the listing's older one). With One row per seller offer
also on, each offer is written as its own free offer row as well (buy box first, 30 a product at most), for buy box tracking in a
sheet.
Product lookup (SKUs and product links)
A SKU or a product link is looked up with its own search on noon (which answers that product alone), or read from its product page when
noon's search does not list it (an item not on sale). A product found that way is billed as a Product plus a Product lookup; a SKU noon
does not have gets a free not_found row.
Free rows
- one
coveragerow per search, category or link: what noon lists (totalOnNoon, noon's own figure, which moves from call to call), pages and rows read, products delivered, repeated or filtered out, the filters sent, whether the walk is complete and why it stopped; with Filter options also noon's filter lists for it (brands, sellers, colours, storage, delivery types ... with their codes); statusrows: an input that cannot be used (field and position named; a setting this Actor does not have refuses the run, and then only the run's start fee is charged), a SKU or page noon does not have, a filter value noon does not list for a page (with the closest values it does list), a noon Minutes delivery point noon does not serve, a filter, order or page noon did not apply, a door noon refused, inputs not started because the run stopped;- one
category_treerow per store with Category tree on: noon's category menu (titles and links); - one
summaryrow at the end: counters, requests, the doors used, what was charged and confirmed.
How much does it cost to scrape noon?
You pay per event, on the Store's discount tiers:
| Event | Free plan | Bronze | Silver | Gold |
|---|---|---|---|---|
| Product (per 1,000) | $0.106 | $0.097 | $0.088 | $0.076 |
| Product lookup (per 1,000, SKUs and product links only) | $0.60 | $0.55 | $0.50 | $0.45 |
| Product detail (per 1,000, only with Product details) | $0.80 | $0.80 | $0.70 | $0.70 |
| Actor start (once per run) | $0.006 | $0.006 | $0.006 | $0.006 |
Platinum and Diamond plans pay the Gold price. The Actor start event has no discount. The Store pricing card shows these same prices per 1,000 events: "$0.076 / 1,000" on the Product row means one product costs less than a hundredth of a cent at Gold.
Examples at Gold: 1,000 products of a search cost $0.076 + $0.006 = $0.082; 1,000 products with their product pages $0.776 + $0.006; 100 SKUs $0.0526 + $0.006; 1,000 noon Minutes items $0.076 + $0.006. Repeated and filtered products, misses and refused pages are free.
Input
| Setting | What it does |
|---|---|
searchTerms | words to search, one search each |
minutesSearchTerms | words to search on noon Minutes, one search each (the UAE, or Saudi Arabia or Egypt when country says so) |
deliveryLatitude, deliveryLongitude | the noon Minutes delivery point in degrees (both or neither) |
startUrls | noon Minutes search links (minutes.noon.com/uae-en/search/?q=milk), and noon.com links: search (/uae-en/search/?q=...), category or any listing page (/uae-en/electronics-and-mobiles/.../smartphones/), brand page (/uae-en/dell/), bestseller list (/uae-en/best-sellers/smartphones/), product page (/uae-en/<name>/N70211556V/p/), with noon's own filters and order in the link |
skus | noon SKUs, looked up one by one |
categories | a category of the picker, or a path below the store (beauty-and-health/beauty/fragrance) |
brands | brand names; alone, each brand is read as its own list |
country, language | the store and language of searchTerms, skus, categories and brands |
sellers, fulfilment, deals, lowestPriceIn, newArrivalsIn, deliveryToday, filters | noon's own filters, matched against the lists noon shows for each search or category |
minPrice, maxPrice, minRating | sent to noon and checked again on each row |
sort | recommended, price_low_to_high, price_high_to_low, newest, rating |
maxItemsPerSearch, maxItems, maxPagesPerSearch, pageSize | limits per search, in all, pages read, products per page |
splitLargeLists | lists past noon's cap of 10,000 are read in price bands |
includeDetails, offerRows, includeFacets, includeCategoryTree, includeRaw, omitEmptyFields | add-ons and output options |
maxConcurrency, requestTimeoutSecs, maxRequestRetries, requestDelaySecs, proxyConfiguration | run settings (leave as they are) |
Example: the newest perfumes under 200 AED from noon Express, with their product pages, in Arabic:
{"searchTerms": ["perfume"],"maxPrice": 200,"fulfilment": ["express"],"sort": "newest","language": "ar","includeDetails": true,"maxItemsPerSearch": 50}
Filters: noon's own names
noon drops a filter it does not know without a word and then shows every product. So each search or category first reads its own filter lists, sends only the brands, sellers and values noon lists there, and checks noon's answer on every page: a value noon does not list gets a free row with the closest values it does list, and a page whose answer does not repeat what was sent is not delivered. Use the names noon shows in its filter panel ("Colour: Black", "RAM Size: 12 GB"). Price, rating, brand, seller and express delivery are checked again on every row. noon compares prices in whole units (20.50 passes a maximum of 20 on noon's side); the row check keeps the exact bound.
Large lists
noon serves 50 pages of one list (10,000 products at 200 a page). Page 51 shows page 50 again, so the Actor stops there and the coverage row says the list is not complete. Narrow it with a filter, or turn on Split large lists: the list is read again in price bands, each band halved until it fits under the cap, every product delivered once, the bands listed on the coverage row.
How long a run takes
Measured on the platform at the default 256 MB: 1,400 noon Minutes items of one search in under a minute; 10,000 products of a category in about 7 minutes (a page of 200 products answers in 1 to
5 seconds); product pages take 8 to 13 seconds of noon's own time each, about 20 to 25 a minute with Product details on; SKUs are looked
up one search each at the pace noon allows one address, about 20 to 35 a minute (200 SKUs in 6 to 10 minutes). Set the run's timeout
to match long SKU lists. A SKU noon does not have costs a search and an 8 to 13 second product page that bill nothing: a list whose first SKUs are all unknown
stops after about 5 to 10 of them in a row (measured: 20 unknown SKUs gave 5 not_found rows, 4 skipped rows whose product page
was not read, and one free skipped row for the other 11, work_allowance, nothing charged but the run's start fee), so put SKUs you
know are live first, or split old lists. Leave Delay between requests at 0 unless you need a slower pace: its waits are run time too, and with
SKUs a delay above about 7 seconds costs more than a found SKU pays, so a long SKU list then stops early (work_allowance).
Integrations
Run it from the Apify API, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or a webhook. With the API:
curl -X POST "https://api.apify.com/v2/acts/automation_craft~noon-scraper/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"searchTerms": ["iphone 17"], "country": "saudi", "maxItemsPerSearch": 20}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_TOKEN>' });const run = await client.actor('automation_craft/noon-scraper').call({ skus: ['N70211556V'], includeDetails: true });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient("<YOUR_TOKEN>")run = client.actor("automation_craft/noon-scraper").call(run_input={"categories": ["smartphones"], "maxItemsPerSearch": 500})items = client.dataset(run["defaultDatasetId"]).list_items().items
What this Actor does NOT do
- Reviews beyond the five on a product page. noon's review list refuses every address this Actor can use (Akamai "Access Denied" to the run's own address, datacenter and residential UAE addresses, 9 of 9 on 2026-10-16); the product page carries the rating summary and up to five reviews, which Product details deliver. noon shows no star breakdown, helpful counts, verified purchase flags or review photos there.
- noon Food (restaurants): a separate service of restaurants and menus, not products.
- noon Minutes beyond its searches: its category and brand pages, its filters and its product pages (description, specifications, nutrition) are not read. The dark store follows the delivery point: noon ignores a dark store or zone code sent on its own (3 of 3 each, 2026-10-28), so there is no dark store setting.
- A discount order or reversed orders. noon offers five orders; asked for a discount order it answers with its recommended one, and for rating or new arrivals in reverse with the usual direction.
- Dollar prices for KWD and EGP. The UAE dirham, Saudi riyal, Qatari riyal, Bahraini dinar and Omani rial are pegged to the US dollar,
and their rows carry
priceUsd; the Kuwaiti dinar and Egyptian pound are not pegged, so their dollar price would need a rate from another source. - Logged in data: no seller dashboard, orders, carts or prices behind a login.
- Monitoring between runs: no memory from one run to the next, no "new products only" mode, no price, stock or seller change
tracking and no alerts. Each run delivers what noon shows at that moment; schedule it on Apify and compare the runs in your own sheet
(every row carries
scrapedAt). Within one run a product is delivered once. - Price history before a run: a row carries the price now, the was price and noon's own notes ("Lowest price in a year"), not a
history; the
lowestPriceInfilter uses noon's own lowest price marks. - Review translation.
FAQ
Does noon have an API?
noon's partner API is for its own sellers and needs a seller account. This Actor reads the public catalog any visitor sees, as rows, for all seven stores, through the Apify API or a schedule.
How do I track noon prices?
Give the searches, categories or SKUs to follow and schedule the run on Apify (daily, hourly): each run delivers every product with its
price, was price, discount, seller and stock at that moment, and its scrapedAt time. Append the runs to a Google Sheet or a database
and compare them there; the Actor itself keeps nothing between runs.
Can I scrape noon Saudi Arabia (KSA)?
Yes. Set Store to Saudi Arabia, or paste a /saudi-en/ or /saudi-ar/ link: prices come in SAR from noon's Saudi store, in English or
Arabic, read through Apify residential addresses in the Gulf (noon's Saudi pages refuse other visitors).
Can I scrape noon Minutes grocery prices for my area?
Yes. Give minutesSearchTerms (milk, eggs, rice) and the delivery point's latitude and longitude: each row carries the price, pack
size, stock and order limit of the dark store that serves that point, with its code (darkStore). Run the same words at several points
to compare dark stores. Saudi Arabia's and Egypt's noon Minutes are read with country set to saudi or egypt.
How do I export noon products to Excel or CSV?
Run a search or category, then open the run's Storage tab and download the dataset as Excel or CSV (the Products view keeps the main columns; turn on Leave out empty fields for a smaller file).
Why does this Actor run with limited permissions?
Least privilege: it reads and writes only its own run's storage (its dataset and key-value store). It cannot see your other actors, datasets or settings.
Changelog
See the Changelog tab: 0.1 (2026-10-28), the first release.
More data tools by Automation Craft
- Trendyol Scraper: Products, Prices, Reviews
- Flipkart Scraper: Products, Prices, Sellers
- AJIO Scraper: Fashion Search, Prices, Reviews
- Myntra Scraper: Fashion Products, Prices, Sizes
- Nykaa Scraper: Beauty Products, Prices, Reviews
- Amazon Product Scraper - Search, Best Sellers
- Amazon Sponsored Products Scraper - Ads by Keyword
- Mercari US Scraper: Listings, Sold Prices
- Google Trends API & Scraper: Trending Searches