Uline Catalog & Price Scraper avatar

Uline Catalog & Price Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Uline Catalog & Price Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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 fetchFullDetails during browse/search to backfill pack price, pack quantity, availability, color, and dimensions onto every result (normally only returned by productDetail mode).
  • Empty fields are always omitted — every record only contains data actually found on the page.

Output per product

  • itemNumber — Uline SKU, e.g. S-4992
  • description — product description as shown on Uline
  • category — Uline's own catalog category label
  • className, 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 node
  • price, priceCurrency — per-unit price, in the currency of the selected market
  • packPrice — total price for the minimum order quantity (e.g. a case), where Uline shows a separate case price (productDetail mode, or browse/search with fetchFullDetails on)
  • packQuantity — number of units in that pack/case (same conditions as packPrice)
  • availabilityInStock / OutOfStock / etc. (same conditions as packPrice)
  • color, dimensions, width, height — physical attributes where Uline publishes them (same conditions as packPrice)
  • priceValidUntil — date the listed price is guaranteed until (same conditions as packPrice)
  • productUrl — direct Uline product page
  • imageUrl — product photo
  • sourceUrl — the exact Uline page the record was scraped from
  • recordType: "product", scrapedAt

Input

FieldTypeDefaultDescription
modestringbrowseByCategorybrowseByCategory / browseByUrl / search / productDetail
productClassselectCls_04 (Boxes, Corrugated)Catalog department to crawl (mode=browseByCategory)
categoryUrlstringFull Uline department/group/subgroup URL to crawl (mode=browseByUrl)
keywordsstringcorrugated boxes 12x12x12Free-text search (mode=search)
itemNumbersarrayUline item numbers or product URLs (mode=productDetail)
minPrice / maxPricenumberPrice range, in the selected market's currency
sortByselectrelevancerelevance / priceLowToHigh / priceHighToLow / itemNumber / nameAToZ
maxItemsinteger30Hard cap on emitted records (1-500)
fetchFullDetailsbooleanfalseFetch each result's own product page to add pack price/quantity, availability, color, dimensions (mode=browseByCategory, browseByUrl, search)
countryselectUSMarket 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
}
{
"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 productDetail mode can't resolve a final SKU for these — the base item still appears in browseByCategory/browseByUrl/search results, 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 sortBy is applied after fetching (Uline's own pages don't expose a server-side sort parameter for catalog/search listings).