H&M Product Scraper π
Pricing
from $0.99 / 1,000 results
H&M Product Scraper π
Scrape H&M products instantly with complete details: pricing, images, stock status, and reviews. Export to JSON/CSV for competitive analysis, price monitoring, and retail research. Fast, reliable H&M data extraction for ecommerce intelligence.
Pricing
from $0.99 / 1,000 results
Rating
5.0
(5)
Developer
Shahid Irfan
Maintained by CommunityActor stats
4
Bookmarked
27
Total users
7
Monthly active users
17 days ago
Last modified
Categories
Share
H&M Product Scraper
Extract structured H&M product data at scale for catalog analysis, pricing monitoring, merchandising research, and market intelligence. This scraper collects product listings with pricing, images, availability, color swatches, and size information from H&M search results and outputs clean, null-free datasets ready for analysis.
Features
- Keyword or URL input β Start from a keyword or any H&M search URL. The actor automatically parses the query and locale.
- Structured product output β Collect product IDs, titles, prices, product URLs, images, stock signals, color swatches, and size breakdowns.
- Automatic pagination β Crawl multiple result pages until your desired result count is reached.
- Clean records β Null and empty values are stripped before saving, so every field in your dataset is meaningful.
- Proxy support β Use Apify Proxy (including residential proxies) for large or frequent runs to stay reliable.
Use Cases
Product Catalog Research
Build a searchable dataset of H&M products for category discovery, assortment reviews, and collection planning across any locale.
Pricing Intelligence
Track formatted and numeric prices, minimum and maximum pricing, and stock availability across multiple pages and runs to monitor changes over time.
Merchandising Monitoring
Analyze product titles, image coverage (product and model shots), color swatch variety, and category distribution to identify merchandising opportunities.
Competitive Benchmarking
Export product data into BI tools like Looker Studio, Tableau, or Excel to compare assortment depth, pricing structure, and stock signals across different categories.
Data Pipeline Automation
Feed scraped product data into your existing systems via webhooks or integrations for automated catalog updates and inventory analysis.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrl | String | No | β | Optional H&M search URL. The actor parses query and locale from it automatically. |
keyword | String | No | β | Search keyword used for product retrieval. Required if startUrl is not provided. |
locale | String | No | en_us | Locale in ll_cc format (e.g., en_us, de_de, sv_se). |
results_wanted | Integer | No | 20 | Maximum number of product records to collect. No hard upper limit. |
max_pages | Integer | No | 10 | Safety cap on the number of result pages processed. No hard upper limit. |
proxyConfiguration | Object | No | Apify Proxy | Proxy settings for improved reliability and anti-blocking on large runs. |
Proxy Configuration
For best results on runs exceeding 100 products, use residential proxies:
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output Data
Each dataset item may contain the following fields:
| Field | Type | Description |
|---|---|---|
id | String | Product identifier |
trackingId | String | Tracking identifier |
productName | String | Product title |
brandName | String | Brand name (typically "H&M") |
productUrl | String | Full product detail page URL |
formattedPrice | String | Displayed formatted price (e.g., "$24.99") |
price | Number | Numeric price value |
priceMin | Number | Minimum listed price |
priceMax | Number | Maximum listed price |
isNewProduct | Boolean | New product flag |
stockState | String | Availability state (e.g., "Available", "Out of Stock") |
isOnline | Boolean | Whether the item is available for online purchase |
isComingSoon | Boolean | Coming-soon flag |
colorName | String | Primary color name |
colorCode | String | Primary color code |
swatchColorNames | Array | All swatch color names from the product listing |
swatchColorCodes | Array | All swatch color codes from the product listing |
allSizes | Array | All size labels available (e.g., ["XS", "S", "M", "L", "XL"]) |
availableSizes | Array | Size labels currently in stock |
outOfStockSizes | Array | Size labels that are out of stock |
sizesCount | Number | Total number of size labels |
imageProductSrc | String | Primary product image URL |
imageModelSrc | String | Model image URL |
galleryImages | Array | Array of gallery image URLs |
mainCatCode | String | Main category code |
searchQuery | String | The search query used for this run |
locale | String | The locale used for this run |
pageNumber | Number | Result page number from which this item was collected |
Usage Examples
Basic Keyword Search
Run a simple keyword search with default settings:
{"keyword": "shirt","results_wanted": 20,"max_pages": 3}
Start From H&M Search URL
Let the actor parse the query and locale directly from an H&M URL:
{"startUrl": "https://www2.hm.com/en_us/search-results.html?q=shirt","results_wanted": 100,"max_pages": 8}
Large Collection With Residential Proxies
For larger datasets, combine a keyword with proxy configuration:
{"keyword": "linen shirt","locale": "en_us","results_wanted": 500,"max_pages": 15,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Sample Output
{"id": "1293921003","trackingId": "OzU7IzsxMjkzOTIxMDAzOyM7Izo=","productName": "Oxford Shirt","brandName": "H&M","productUrl": "https://www2.hm.com/en_us/productpage.1293921003.html","formattedPrice": "$24.99","price": 24.99,"priceMin": 24.99,"priceMax": 24.99,"stockState": "Available","isOnline": true,"colorName": "Blue/striped","colorCode": "333859","swatchColorNames": ["Blue/striped", "White"],"allSizes": ["XS", "S", "M", "L", "XL"],"availableSizes": ["S", "M", "L", "XL"],"outOfStockSizes": ["XS"],"sizesCount": 5,"imageProductSrc": "https://image.hm.com/assets/hm/example-product.jpg","imageModelSrc": "https://image.hm.com/assets/hm/example-model.jpg","mainCatCode": "men_shirts","searchQuery": "shirt","locale": "en_us","pageNumber": 1}
Tips For Best Results
Start Small First
- Begin with
results_wanted: 20and a single keyword to validate the run. - Check the output quality before scaling up to larger collections.
Use Specific Keywords
- Prefer specific product terms like
linen shirt,cotton dress, orwool blazerover generic terms. - Consistent keyword spelling gives you repeatable results for scheduled monitoring.
Scale Responsibly
- Use residential proxies (
RESIDENTIALgroup) for runs over 100 results. - Keep
max_pagesbetween 10 and 15 to balance data volume with run time. - Space out scheduled runs to avoid unnecessary load.
Understand Locale Behavior
- The default locale is
en_us. Change it tode_de,fr_fr,sv_se, or others for region-specific results. - When using
startUrl, the locale is automatically detected from the URL path.
Integrations
Connect your collected data with:
- Google Sheets β Create live product tracking sheets for team collaboration.
- Airtable β Build searchable product databases with custom views and filters.
- Looker Studio / Tableau β Visualize pricing trends, category distribution, and stock patterns.
- Webhooks β Forward fresh product data to your own systems in real time.
- Make / Zapier β Automate downstream workflows like notifications, reporting, and alerts.
Export Formats
- JSON β API and engineering workflows
- CSV β Spreadsheet analysis and pivot tables
- Excel β Business reporting and operations
- XML β Legacy system integrations
Frequently Asked Questions
How many products can I collect?
You can collect as many products as needed per run by setting results_wanted. The actual number depends on the search results available and your max_pages cap.
Does the dataset include empty or null values?
No. Null, empty, and undefined values are automatically removed before records are saved. Every field you see in the output contains meaningful data.
Can I run this scraper on a schedule?
Yes. Apify supports scheduled runs. You can set up daily or hourly runs and export new data automatically to any integrated service.
When should I use proxy configuration?
Use proxies when running large collections (over 100 products) or when you see repeated empty results. Residential proxies give the best reliability.
Can I use an H&M URL instead of a keyword?
Yes. Provide a full H&M search URL as startUrl. The actor parses the search query and locale from the URL automatically, so you don't need to specify them separately.
How does locale affect the results?
The locale determines which regional H&M catalog is searched. For example, en_us returns US products with USD pricing, while de_de returns German products with EUR pricing.
Are advanced API parameters like sort or department available?
The actor uses stable internal defaults for advanced parameters to keep input simple and runs reliable. If you need custom parameters, contact support.
What kind of data quality can I expect?
Fields are type-validated, duplicates are not introduced, and empty values are stripped. The output matches the same product data shown on H&M search result pages.
Support
For issues or feature requests, use the Apify Console support channels or open an issue on the actor's page.
Resources
Legal Notice
This actor is designed for legitimate data collection and analytics workflows. Users are responsible for complying with applicable terms, policies, and laws in their jurisdiction.