Hamiz Multi-Scraper (hamiz.com) avatar

Hamiz Multi-Scraper (hamiz.com)

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Hamiz Multi-Scraper (hamiz.com)

Hamiz Multi-Scraper (hamiz.com)

Scrape hamiz.com — Algeria's buy-and-sell marketplace. Paste a search, category, seller or product URL and get fixed prices in Algerian Dinar, discounts, availability, category path, seller, rating, specs and photos. No login needed.

Pricing

from $0.60 / 1,000 results

Rating

0.0

(0)

Developer

Hamza Abbad

Hamza Abbad

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Security

Limited permissions

Share

Hamiz Multi-Scraper

Scrape Hamiz — Algeria's buy-and-sell marketplace. No login required, quick to start and cheap to run at scale. Every record is a flat, normalized object ready to feed straight into a spreadsheet, a database, or another Actor downstream.

The Actor needs exactly one input: paste any hamiz.com page URL into URL (pageUrl) and it detects what the page is — a search page runs that search, a category page browses the category, a seller page scrapes that seller's listings, a product page scrapes that product with the full detail data. A results URL starts the walk at the page stated in the link, and the URL's language prefix (/en/, /fr/, /ar/) picks the storefront language.

Hamiz is a fixed-price marketplace: sellers list products with a set price in Algerian Dinar, a stock state, and delivery handled by the seller. There is no bargaining concept and no negotiable-price flag — the price you see is the price. The site is trilingual (Arabic, French, English); without a pasted URL, the Language (locale) input picks which storefront language your run uses, which also decides the language prefix of the result URLs.

What you can scrape

Paste any hamiz.com page URL from the browser's address bar into URL (pageUrl) and the Actor runs the matching task. The table below maps each page kind to what it returns.

Page you pasteWhat it returns
Search page — https://hamiz.com/en/search/?q=iphoneEvery product matching the keyword, walking the site's own search result pages from the link's page onward (20 per page; card rows: id, title, price, image). A search with a category selected in the site's filters (https://hamiz.com/ar/search/category-…/?q=…) stays narrowed to that category — the Actor walks exactly the result set the page shows, including its result count
Category page — https://hamiz.com/en/automobile.htmlAll products in one category, paginated at 20 per page
Seller page — https://hamiz.com/en/dima-topEvery product the seller has listed, one row per product
Product page — https://hamiz.com/en/4-piece-car-window-sunshade-set-black-s6223.htmlThat one product, fully enriched: description, SKU, special and regular prices, discount percent, stock state, seller card, image gallery, rating, delivery note

The Category tree snapshot task (every category node from the site menu with its depth and parent chain) has no page URL, so it stays in the collapsible Legacy inputs (advanced) section together with the explicit per-task controls — all of them keep working for integrations that drive one mode programmatically. In explicit modes every surface-specific field falls back to the URL field when its own field is empty.

All modes share the same flat row shape; each mode populates only the fields it has data for (the others are null or empty). Grid modes (search / category / seller) fill the card fields; directUrls fills the full projection; categories emits category nodes marked with __type: "hamiz_category". Every row is one product (or one category node).

Why this Actor

  • Search that keeps your filters. Keyword search walks the same result pages a visitor sees, and a search URL with a category selected keeps that scope on every page the run walks. The site's search page is the one most likely to push back, so the Actor opens it the way a normal visit does — no CAPTCHAs to solve, quick start, cheap to run at scale.
  • Flat, uniform output. Every row is a flat object with no nested structures — the dataset table shows clean values instead of "N fields" badges. Specification tables become two parallel lists (specNames / specValues) whose entries pair up by position.
  • Real discount math. Products on sale carry both prices plus the percent: price (what you pay), regularPrice (before the sale), and discountPct (e.g. 28 for "-28%"). currency is always "DZD".
  • Seller context where it exists. Product pages name the seller ("Sold by …"), show a verified-seller mark, and link the storefront — the Actor captures all three, plus the seller avatar. Seller listings (seller) then walks that seller's whole inventory.
  • You only ever paste URLs. Every reference field takes a full page URL, straight from the browser's address bar. No IDs, no slugs, no values copied out of the address bar — and the Actor tells you exactly what it expected if a URL points at the wrong kind of page.

Where it goes beyond a search feed

A keyword search gives you the products that match. These surfaces give you the shop, the detail page and the catalogue behind them:

SurfaceWhat a run gives youWhat it is for
Seller page — https://hamiz.com/en/dima-topevery product that shop lists, one row each, with price and stock statewatch a reseller's catalogue and pricing over time
Product page — https://hamiz.com/en/4-piece-car-window-sunshade-set-black-s6223.htmlthe product in full: description, SKU, special and regular price, discount percent, stock, seller card, gallery, rating and delivery noteprice and availability checks that need the detail, not the card
Category page — https://hamiz.com/en/automobile.htmlthe whole category, paged 20 at a timea clean catalogue snapshot of one niche
Category treeevery menu node with depth and parent chainmap the marketplace, or find the exact category URL to paste

Quick start

  1. Open this Actor in Apify Console.

  2. Click Try actor and paste a page URL into URL (pageUrl) — the minimum valid input is:

    { "pageUrl": "https://hamiz.com/en/search/?q=iphone" }
  3. Click Start. Results land in the Dataset tab, one JSON object per product.

The smallest valid input runs a keyword search across the whole site, with sensible defaults for everything else.

Tutorial: a real workflow

1. Track prices for a keyword

Search returns the site's own card data — id, title, price, image — 20 products per page, walking every result page until the result count on the first page is covered:

{
"pageUrl": "https://hamiz.com/fr/search/?q=climatiseur",
"maxItems": 500,
"maxPages": 20
}

Schedule this daily and diff the price column per id to catch price moves.

2. Enrich the interesting hits

Search rows are deliberately lean (no description, no seller, no stock). Take the url values you care about and run them back through the Actor for the full projection:

{
"startMode": "directUrls",
"startUrls": ["https://hamiz.com/en/4-piece-car-window-sunshade-set-black-s6223.html"]
}

This fills description, sku, regularPrice, discountPct, availability, the seller card (sellerName, sellerVerified, sellerProfileUrl, sellerAvatar), the full images gallery, rating, questionCount, deliveryInfo, and the spec table (specNames / specValues).

3. Walk a seller's inventory

Paste any seller storefront URL to get everything they list:

{
"pageUrl": "https://hamiz.com/en/dima-top",
"maxItems": 500
}

4. Map the taxonomy

One run with Category tree snapshot (categories, in the Legacy inputs (advanced) section) emits every category node with its depth and parentPath (e.g. Categories › Automobile › …). Use the node URLs as Category page URL (categoryUrl) inputs for follow-up browse runs — or paste any of them into URL (pageUrl).

Input

URL (pageUrl) is the one field a run needs; every other field has a default. The Console form shows it first, then the collapsible Legacy inputs (advanced), Limits & performance and Output & debugging sections.

Main input

Label (key)DescriptionDefault
URL (pageUrl)Any hamiz.com page URL, pasted from the address bar. The Actor detects the task from it: search page → that search, category page → that category, seller page → that seller's inventory, product page → that product in full detail.—
Search keyword (searchQuery)Keyword search without a URL. Prefer the URL field — it also carries a category scope and the starting page.—
Category page URL (categoryUrl)The category page to browse when a run is driven by fields instead of a URL.—
Seller page URL (sellerUrl)The seller whose inventory to walk when a run is driven by fields instead of a URL.—
Product URLs (startUrls)Several product pages at once, each scraped with the full detail projection.—

Legacy inputs (advanced)

Label (key)DescriptionDefault
What to scrape (startMode)auto (default) detects the task from the pasted URL. Explicit values for what a URL can't express: search / category / seller / directUrls / categories. In explicit modes every surface-specific field falls back to URL (pageUrl) when its own field is empty.auto

Limits & performance

Label (key)DescriptionDefault
Maximum results (maxItems)Max products to push. 0 = no cap.200
Maximum pages (maxPages)Max result pages per run, 20 products per page. 0 = no cap.20
Requests per minute (maxRequestsPerMinute)Requests per minute. The polite default keeps the site happy long-term — higher values make blocking more likely, not runs faster.30
Skip duplicate products (dedupe)Skip products already pushed earlier in the run.true

Output & debugging

Label (key)DescriptionDefault
Language (locale)Which storefront language to fetch (Arabic / French / English). It also decides the language prefix of the result URLs. Seller-entered text is never translated.fr
Debug: include raw source record (debugIncludeRaw)Add a raw field with the original source record to each row — useful while you map a field you need; makes the dataset much larger.false

Output

One JSON object per product (or per category node), flat: every field is a scalar or a list of scalars, so the dataset table shows clean values instead of "N fields" badges.

The Row type column (__type) separates the two row kinds: product rows leave it null; a Category tree snapshot (categories) run emits category nodes marked hamiz_category.

{
"id": "10708",
"url": "https://hamiz.com/en/4-piece-car-window-sunshade-set-black-s6223.html",
"title": "Pack of four black car sun shades for windows",
"price": 1799,
"priceRaw": "DZD 1,799.00",
"regularPrice": 2500,
"discountPct": 28,
"currency": "DZD",
"availability": "in_stock",
"sellerName": "Dima Top",
"sellerVerified": true,
"primaryImageUrl": "https://hamiz.com/uploads/…jpg",
"imageCount": 4,
"scrapedAt": "2026-11-04T20:02:49.082Z"
}
ColumnWhat it holds
id, urlProduct id and its page URL. On category nodes the URL is the category page.
title, descriptionProduct headline and full description — the description needs the product page, so grid runs leave it null.
price, priceRaw, regularPrice, discountPct, currencyWhat you pay, the price as displayed, the pre-sale price, the discount percent and the currency (always DZD).
skuThe seller's stock-keeping unit.
availabilityin_stock or out_of_stock, from the product page.
categoryPath, categoryLabelBreadcrumb path and leaf category — grid cards carry no category, so these come from detail pages.
sellerSlug, sellerName, sellerProfileUrl, sellerVerified, sellerAvatarThe seller block: who sells it, whether the seller is verified, and a link to their storefront.
images, primaryImageUrl, imageCountGallery, the first image on its own for thumbnails, and how many images the listing carries.
rating, questionCountAverage rating and how many buyer questions the product has.
deliveryInfoDelivery note as the seller states it.
specNames, specValuesSpec table as two parallel lists — entry N of specNames describes entry N of specValues.
name, depth, parentPathCategory nodes only: label, menu depth and parent chain.
scrapedAtWhen the row was collected.

Notes and limits

  • Rate limiting. The site sits behind bot protection that watches request patterns. The default pace (30 requests per minute) is deliberately polite — raising it makes blocks more likely, not runs faster.
  • Search recall. Keyword search walks the site's own result pages, so the row count matches the result count the site shows for the query — or, when the pasted URL carries a category scope, the count the site shows for that narrowed set. For exhaustive coverage of a niche, combine a search run with a category browse.
  • No contact details. Hamiz exposes no phone numbers, WhatsApp contacts, or emails on product or seller pages — buyer questions go through the site's own Q&A tab (captured as questionCount). There is no contact-info toggle because there is nothing to reveal.
  • Seller-entered text is never translated. Titles and descriptions stay in whatever language the seller wrote (often Arabic or French) regardless of the Language (locale) input — that input only affects interface labels and URL prefixes.
  • Live counters are point-in-time. Ratings and question counts reflect the moment of the run.

FAQ

How do I find the URLs to paste? Browse the site normally and copy the address bar: a search you ran (https://hamiz.com/en/search/?q=iphone), a category you opened (https://hamiz.com/en/automobile.html), a shop you visited (https://hamiz.com/en/dima-top), a product you clicked (https://hamiz.com/en/…-s6223.html). Each kind of page maps to its matching task.

Do I need to configure anything network-related? No. On the Apify platform the Actor finds a working route to the site on its own and stays on it for the run — there is nothing to set up.

Why do some fields come back null? Each mode fills only what its surface provides. Descriptions, stock states, and seller cards need a product page — run those URLs through Specific product URLs (directUrls) to fill them.

What does discountPct: null mean? The product has no special offer — price is the only price. It does not mean "no discount data".

How do I pair specNames with specValues? By position: entry N of specNames (e.g. "Color") describes entry N of specValues (e.g. "Black").

The run stopped before maxItems — is that an error? No. Grids end when the site runs out of products (an empty page stops pagination), and the run ends when every queued page is done. Re-running with the same settings is idempotent thanks to built-in dedupe.

Contact

Bug reports, feature requests, or a custom scraper for a site not yet covered? Open an issue on the Actor's Apify Console page or message the maintainer directly there.