Hamiz Multi-Scraper
Pricing
from $0.60 / 1,000 results
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
Maintained by CommunityActor 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 label | What it returns | Best for |
|---|---|---|
search — Search by keyword | Every 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 category | All products in one category, paginated at 20 per page | Browsing a niche (car accessories, phones, home goods…) |
directUrls — Specific product URLs | A specific list of product pages, fully enriched: description, SKU, special and regular prices, discount percent, stock state, seller card, image gallery, rating, delivery note | Following up on alerts, checking one item's details, resuming a previous run |
seller — Seller listings | Every product a seller has listed, one row per product, paginated | Tracking a shop's inventory, monitoring a seller |
categories — Category tree snapshot | Every category node from the site menu (hundreds of nodes) with its depth and parent chain | Building 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
nullor empty). Grid modes (search/category/seller) fill the card fields;directUrlsfills the full projection;categoriesemits 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), anddiscountPct(e.g.28for "-28%").currencyis 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
-
Open this Actor in Apify Console.
-
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" } -
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.
