Hamiz Multi-Scraper avatar

Hamiz Multi-Scraper

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Hamiz Multi-Scraper

Hamiz Multi-Scraper

Scrape hamiz.com, Algeria's buy-and-sell marketplace, with lightweight HTTP requests against the site's own search, category, and seller pages. No login and no browser automation required.

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

13 days ago

Last modified

Categories

Share

Scrape hamiz.com — Algeria's buy-and-sell marketplace — with lightweight HTTP requests against the site's own search, category, and seller pages. No login and no browser automation required. Every record is a flat, normalized object ready to feed straight into a spreadsheet, a database, or another Actor downstream.

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); 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

The Actor drives five modes from a single What to scrape (startMode) input. Pick the one that matches what you want.

Key (startMode value) — Console labelWhat it returnsBest for
search — Search by keywordEvery product matching a free-text query, walking the site's own search result pages (20 per page; card rows: id, title, SKU, price, image)Market research, price tracking, product discovery
category — Browse a categoryAll products in one category, paginated at 20 per pageBrowsing a niche (car accessories, phones, home goods…)
directUrls — Specific product URLsA specific list of product pages, fully enriched: description, SKU, special and regular prices, discount percent, stock state, seller card, image gallery, rating, delivery noteFollowing up on alerts, checking one item's details, resuming a previous run
seller — Seller listingsEvery product a seller has listed, one row per product, paginatedTracking a shop's inventory, monitoring a seller
categories — Category tree snapshotEvery category node from the site menu (hundreds of nodes) with its depth and parent chainBuilding a taxonomy, seeding category runs, site mapping

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). Use the key names (search, category, directUrls, seller, categories) in JSON/API calls — the What to scrape (startMode) picker shows the Console labels.

Why this Actor

  • Search that works without a browser. Keyword search walks the same result pages a visitor sees. The search page is the site's most protected surface, so every request replays a real navigation: a warmed session with the site's cookies, the same-origin referer a page-to-page click would send, and locale headers. No browser automation, no CAPTCHA solving, fast on cold start and 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.

Quick start

  1. Open this Actor in Apify Console.

  2. Click Try actor and set What to scrape (startMode) to Search by keyword (search), plus a Search keyword (searchQuery) — the minimum valid JSON is:

    { "startMode": "search", "searchQuery": "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: real workflows

1. Track prices for a keyword

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

{
"startMode": "search",
"searchQuery": "climatiseur",
"locale": "fr",
"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:

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

4. Map the taxonomy

One run with Category tree snapshot (categories) 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.

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. 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

Do I need a proxy? No. On the Apify platform the Actor automatically probes proxy addresses and locks onto one that returns data, falling back to direct egress when none is needed.

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.