Uline Catalog & Price Scraper
Pricing
from $3.00 / 1,000 results
Uline Catalog & Price Scraper
Scrape live industrial, packaging, and shipping-supply listings from Uline.com - browse any of the 45 top-level catalog departments, search by keyword, or look up full product detail (price, description, category path) by item number. No login required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape live industrial, packaging, and shipping-supply listings from Uline.com — browse any of Uline's 45 top-level catalog departments (or jump straight to any group/subgroup by URL), search by keyword, or pull full product detail (price, pack pricing, availability, dimensions) straight from an item number. Works on Uline's US, Canadian (English & French), and Mexican storefronts. No login, no account, no paid proxy required.
What this actor does
- Browse a catalog department — pick from all 45 Uline departments (Boxes, Tape, Stretch Wrap, Janitorial Supplies, Gloves, Shelving, and more). The actor automatically crawls every group and subgroup inside the department and collects every in-stock item with its real price.
- Browse by group/subgroup URL — paste any Uline department/group/subgroup URL (e.g. copied straight from your browser while browsing uline.com) to crawl that exact node, without being limited to the 45 top-level departments.
- Search by keyword — free-text search across Uline's full catalog, e.g.
corrugated boxes 12x12x12,packing tape 2 inch. - Product detail by item number — paste one or more Uline item numbers (e.g.
S-4992) or product URLs to get the full detail record, including pack price/quantity, availability, color, and dimensions. - Multi-market — scrape uline.com (US, USD), uline.ca (Canada, CAD, English or French), or uline.mx (Mexico, MXN, Spanish) — same catalog and item numbers, localized pricing.
- Filters — price range and 5 sort orders (relevance, price low/high, item number, name A-Z).
- Optional full-detail enrichment — turn on
fetchFullDetailsduring browse/search to backfill pack price, pack quantity, availability, color, and dimensions onto every result (normally only returned byproductDetailmode). - Empty fields are always omitted — every record only contains data actually found on the page.
Output per product
itemNumber— Uline SKU, e.g.S-4992description— product description as shown on Ulinecategory— Uline's own catalog category labelclassName,classNum— top-level department (e.g.Boxes, Corrugated/Cls_04)groupName,groupNum— mid-level group (e.g.Corrugated Boxes/Grp_9)subgroupName,subgroupNum— leaf subgroup (e.g.Long Boxes/BL_406)categoryUrl,groupUrl,subgroupUrl— live Uline URL for each ancestor catalog nodeprice,priceCurrency— per-unit price, in the currency of the selected marketpackPrice— total price for the minimum order quantity (e.g. a case), where Uline shows a separate case price (productDetailmode, or browse/search withfetchFullDetailson)packQuantity— number of units in that pack/case (same conditions aspackPrice)availability—InStock/OutOfStock/ etc. (same conditions aspackPrice)color,dimensions,width,height— physical attributes where Uline publishes them (same conditions aspackPrice)priceValidUntil— date the listed price is guaranteed until (same conditions aspackPrice)productUrl— direct Uline product pageimageUrl— product photosourceUrl— the exact Uline page the record was scraped fromrecordType: "product",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | browseByCategory | browseByCategory / browseByUrl / search / productDetail |
productClass | select | Cls_04 (Boxes, Corrugated) | Catalog department to crawl (mode=browseByCategory) |
categoryUrl | string | – | Full Uline department/group/subgroup URL to crawl (mode=browseByUrl) |
keywords | string | corrugated boxes 12x12x12 | Free-text search (mode=search) |
itemNumbers | array | – | Uline item numbers or product URLs (mode=productDetail) |
minPrice / maxPrice | number | – | Price range, in the selected market's currency |
sortBy | select | relevance | relevance / priceLowToHigh / priceHighToLow / itemNumber / nameAToZ |
maxItems | integer | 30 | Hard cap on emitted records (1-500) |
fetchFullDetails | boolean | false | Fetch each result's own product page to add pack price/quantity, availability, color, dimensions (mode=browseByCategory, browseByUrl, search) |
country | select | US | Market to scrape: US (uline.com), CA (uline.ca), CA_FR (fr.uline.ca), MX (uline.mx) |
Example: browse a department
{"mode": "browseByCategory","productClass": "Cls_17","maxPrice": 50,"maxItems": 100}
Example: browse a specific group by URL
{"mode": "browseByUrl","categoryUrl": "https://www.uline.com/Grp_9/Corrugated-Boxes","maxItems": 50}
Example: keyword search
{"mode": "search","keywords": "nitrile gloves large","maxItems": 40}
Example: product detail by item number
{"mode": "productDetail","itemNumbers": ["S-4992", "S-4748"]}
Example: Canadian market with full-detail enrichment
{"mode": "browseByCategory","productClass": "Cls_04","country": "CA","fetchFullDetails": true,"maxItems": 20}
FAQs
Does this actor need a Uline account or cookies?
No. Catalog department browsing and product detail pages are fully public. Uline's dedicated keyword-search page sits behind a short-lived JS verification challenge, so search mode uses a headless browser only for that first step; every other request is plain HTTP.
Why does keyword search sometimes return fewer results than expected? Uline auto-narrows broad or ambiguous search terms (e.g. a single generic word) to a department landing page instead of a direct product list. This actor detects that case and automatically drills into the first matching group/subgroup so you still get real, relevant products — a more specific, multi-word phrase (ideally including a size or spec) returns the most precise direct matches.
What does productClass cover?
Every one of Uline's 45 public top-level catalog departments — shipping, packaging, janitorial, safety, retail, office, and warehouse supplies. If you need a narrower slice than a whole department, use mode: "browseByUrl" with the exact group or subgroup URL instead.
What markets are supported?
US (uline.com, USD), CA (uline.ca, CAD, English), CA_FR (fr.uline.ca, CAD, French), and MX (uline.mx, MXN, Spanish). All four serve the same catalog structure and item numbers with localized pricing.
Why don't packPrice, availability, color, etc. show up on browse/search results?
Those fields come from each product's own detail page, which browse/search modes don't fetch by default (to keep runs fast). Turn on fetchFullDetails to fetch them for every result, at the cost of one extra request per item — or use productDetail mode directly, which always includes them at no extra configuration.
Why did I get 0 results? Either the department/URL/keyword/item number had no matching data, or your price filter excluded every match. The run's status message explains which case applies.
Limitations
- Size/variant "root" items (mostly apparel-sized products like gloves) require Uline's own size-selector form rather than a single static product page, so
productDetailmode can't resolve a final SKU for these — the base item still appears inbrowseByCategory/browseByUrl/searchresults, just without pack/detail enrichment. - "Related items" shown on Uline's product pages are loaded client-side after page load and aren't present in the static HTML, so they aren't extracted.
- Client-side
sortByis applied after fetching (Uline's own pages don't expose a server-side sort parameter for catalog/search listings).