ETM Electrical Equipment Scraper avatar

ETM Electrical Equipment Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
ETM Electrical Equipment Scraper

ETM Electrical Equipment Scraper

Scrape ETM.ru - a major Russian B2B electrical-equipment retailer. Search products, browse categories, or fetch full product details: prices, specifications, images, certificates, package/logistics data, per-warehouse stock, and analog products.

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

a day ago

Last modified

Share

ETM Scraper

Scrape ETM.ru — one of Russia's largest B2B electrical-equipment distributors, selling circuit breakers, cables, sockets, luminaires, tools, and industrial-automation components. Search by keyword, browse any product category, or pull full product details: price, specifications, images, certificates, and stock availability.

What this actor does

  • Four modes: search, byCategory, productDetails, categoryFacets
  • Search — free-text keyword search across ETM's full catalog
  • Category browsing — paginate any category by its id/slug or catalog URL, optionally filtered to a single manufacturer/brand
  • Product details — full specs, certificates, technical documents, package/logistics data, structured per-warehouse stock, and real analog/substitute products
  • Category/search facets — the real subcategory and brand breakdown (with ETM's own live product counts per facet) for a category or search query, useful for discovering narrower categories/brands to feed back into byCategory
  • Empty fields are omitted — every record only contains fields ETM actually returned

Output per product

Search / category listing records:

  • productId, sku, name
  • brand, brandSeries, brandSlug
  • countryOfOrigin, packaging, unit
  • price, currency, priceLabel (e.g. "promotional price")
  • availabilityText, pickupText
  • categoryCode
  • thumbnailUrl, imageUrl
  • isNew — only present when ETM flags the product as newly listed
  • productUrl
  • scrapedAt

Product-detail records additionally include:

  • description, etmCode, packagingInfo, warranty, paymentMethods
  • brandId (ETM's internal manufacturer id)
  • priceRetail, cashbackAmount (ETM loyalty cashback, RUB, when offered)
  • categoryPath[], category, categoryUrl — full breadcrumb trail
  • images[] (full-size)
  • specifications[]{name, value} pairs (power, voltage, dimensions, IP rating, etc.)
  • certificates[]{name, type, fileUrl} (EAC/GOST conformity certificates, PDF)
  • technicalDocuments[]{name, type, url} (datasheets, manuals, PDF)
  • packages[]{unit, quantity, weightKg, lengthM, widthM, heightM, volumeL} per packaging unit (single item, factory box, pallet, etc.) — real logistics data for freight/shipping calculations
  • stockByWarehouse[]{warehouseType, quantity, deliveryTime} (or
    {warehouseType, status}
    for backorder/made-to-order items) — a structured breakdown per ETM warehouse network (supplier distribution center, local warehouse, etc.), not just one combined text label
  • analogs[] — real substitute/equivalent products ETM itself recommends, shaped identically to a listing record (productId, name, brand, price, productUrl, …) so it's a drop-in swap for cross-brand sourcing
  • ratingValue, reviewCount — only present when the product has actual customer reviews (omitted rather than emitted as 0/0 on the vast majority of products that have none yet)
  • discontinued, isNew
  • externalArt, certificateName, relatedProducts[] — occasionally present instead of brandId/warranty/paymentMethods/packages[]/stockByWarehouse[]/ ratingValue/analogs[] on an older ETM page shape; whichever shape a given product page returns determines which of these two field groups you get
  • scrapedAt

Category/search facet records (mode=categoryFacets) contain instead:

  • queryType (category or search), query (the input you gave)
  • categoryCode, categoryName, categoryUrl, categoryPath[] — the category itself and its breadcrumb (only for category queries; omitted for free-text search queries)
  • subcategories[]{categoryCode, categoryName, categorySlug, productCount, categoryUrl} for every subcategory ETM shows within the current result set, each with its own live product count
  • brands[]{brandId, brandName, brandSlug, productCount, brandFilter} for every manufacturer ETM shows within the current result set, each with its own live product count — brandFilter is a ready-to-use value for the byCategory mode's brand input
  • scrapedAt

Input

FieldTypeDefaultDescription
modeselectsearchsearch / byCategory / productDetails / categoryFacets
searchQuerystringавтоматFree-text query (mode=search, or mode=categoryFacets)
categorystringCategory id+slug or catalog URL (mode=byCategory, or mode=categoryFacets)
brandstringOptional brand filter, <brandId>_<brandSlug> or a brand-filtered catalog URL (mode=byCategory only)
productUrlsarrayProduct URLs or numeric IDs (mode=productDetails)
maxItemsint10Hard cap on emitted records (1–500)
proxyConfigurationproxyResidential (RU)Required — see "Why is residential proxy required?" in the FAQ

Example: search for circuit breakers

{
"mode": "search",
"searchQuery": "автомат",
"maxItems": 20
}

Example: browse a category

{
"mode": "byCategory",
"category": "501010_avtomaticheskie_vykljuchateli",
"maxItems": 50
}

Example: fetch specific products

{
"mode": "productDetails",
"productUrls": [
"https://www.etm.ru/cat/nn/7416742",
"6187756"
]
}

Example: browse a category filtered to one brand

{
"mode": "byCategory",
"category": "5004_avtomaticheskie_vykljuchateli",
"brand": "432_iek",
"maxItems": 50
}

Example: get subcategory/brand breakdown for a category

{
"mode": "categoryFacets",
"category": "5004_avtomaticheskie_vykljuchateli"
}

Use cases

  • Price monitoring — track electrical-equipment pricing across brands
  • Catalog enrichment — pull specifications and certificates for procurement systems
  • Market research — analyze category assortment and brand coverage
  • Sourcing — find in-stock alternatives across manufacturers for a given product class
  • Compliance — verify EAC/GOST certification documents for imported equipment

Other Russian marketplace actors by CrawlerBros

ActorURL
Citilink Scraper - Russian Electronics Store Productshttps://apify.com/crawlerbros/citilink-scraper
DNS-Shop Scraperhttps://apify.com/crawlerbros/dns-shop-scraper
Eldorado Scraperhttps://apify.com/crawlerbros/eldorado-scraper
ETM Electrical Equipment Scraper (this actor)https://apify.com/crawlerbros/etm-scraper
Holodilnik.ru Scraperhttps://apify.com/crawlerbros/holodilnik-scraper
Lemanapro Scraperhttps://apify.com/crawlerbros/lemanapro-scraper
Magnit Market (mm.ru) Scraperhttps://apify.com/crawlerbros/magnit-market-scraper
Maxidom Scraperhttps://apify.com/crawlerbros/maxidom-scraper
Megamarket.ru Scraperhttps://apify.com/crawlerbros/megamarket-scraper
M.Video Scraperhttps://apify.com/crawlerbros/mvideo-scraper
Onlinetrade.ru Scraperhttps://apify.com/crawlerbros/onlinetrade-scraper
Ozon Scraper - Products, Categories & Searchhttps://apify.com/crawlerbros/ozon-scraper
Petrovich Building Materials Scraperhttps://apify.com/crawlerbros/petrovich-scraper
Regard Scraperhttps://apify.com/crawlerbros/regard-scraper
Russkiy Svet (rs24.ru) Electrical Equipment Scraperhttps://apify.com/crawlerbros/russkiysvet-scraper
Technopark.ru Scraper - Products, Categories & Searchhttps://apify.com/crawlerbros/technopark-scraper
VseInstrumenti.ru Scraperhttps://apify.com/crawlerbros/vseinstrumenti-scraper
Wildberries Scraperhttps://apify.com/crawlerbros/wildberries-scraper
X-Com Shop Scraperhttps://apify.com/crawlerbros/xcom-shop-scraper
Yandex Market Pro Scraperhttps://apify.com/crawlerbros/yandex-pro-scraper

FAQ

Why does this actor require a residential proxy? ETM.ru's own block page states the reason: it geo-restricts access to Russian IP ranges. This isn't a workaround for scraping etiquette — non-Russian visitors (VPN users included) get the same block in a normal browser.

Can I search in English? ETM's catalog is Russian-language; search terms should be in Russian (e.g. автомат, кабель, розетка) for relevant results. Product data returned (names, specs) is also in Russian, matching the site's audience.

What does category accept? Either the bare <code>_<slug> identifier (e.g. 501010_avtomaticheskie_vykljuchateli) or a full catalog URL from etm.ru — both are accepted interchangeably.

Why are some products missing priceRetail? ETM shows a single price for most SKUs; priceRetail only appears when the site returns a distinct retail price alongside the wholesale/contract price.

Are prices in rubles? Yes — all price fields are in RUB (Russian rubles), matching ETM's own currency.

What if a product has no listed price? ETM occasionally omits price for discontinued or made-to-order items; the price field is omitted rather than set to 0 or null in that case.

What are analogs[]? ETM's own substitute/equivalent-product recommendations for the item (e.g. an alternative manufacturer's version of the same lamp/breaker/socket) — useful for sourcing when a specific brand is out of stock. Only present when ETM lists at least one analog for that SKU.

What is stockByWarehouse[]? ETM tracks availability per warehouse network (its own distribution center vs. a local regional warehouse vs. made-to-order), each with its own quantity and delivery estimate. This field gives that breakdown as structured data instead of a single combined text string; availabilityText still carries the human-readable summary for convenience.

How do I find the right brand value for byCategory? Run mode=categoryFacets on the category first — every entry in its brands[] array includes a brandFilter value (e.g. 432_iek) ready to paste into the brand input.

Does the brand filter work on mode=search? No — it's only supported on mode=byCategory. ETM's brand-filtered URL pattern is category-scoped (<categoryCode>_<categorySlug>-<brandId>_<brandSlug>); free-text search doesn't expose the same URL-level filter.

Is the brand filter on mode=byCategory guaranteed accurate? Yes — ETM's own brand-filtered category URL isn't consistently honored server-side for every category (it can silently return the full, unfiltered category page), so the actor additionally checks every product's manufacturer against the requested brand before including it in the output. You will only ever see products from the brand you asked for, even on categories where ETM's URL filter itself doesn't take effect (in that case the actor pages further into the category, as needed, to keep finding matches). If a brand is requested that genuinely has no products in the category (typo, wrong id, or a brand that just isn't sold in that category — some ETM categories carry 10,000+ products across dozens of brands), the actor stops after several consecutive fully-empty pages rather than paging through the entire category, and reports this via the run's status message instead of silently returning nothing.

What if I pass a productUrls numeric ID that doesn't exist? ETM's own product page for an unrecognized bare ID (e.g. 1) can resolve to an unrelated fallback product rather than a 404 — this is the site's own behavior, not the actor's. The output record always reflects whichever real product ETM actually returned for that URL/ID; double-check the returned productUrl against what you intended if you're passing bare numeric IDs that weren't sourced from a search/category/facets result first.

Are categoryFacets product counts accurate? Yes — productCount on each subcategory/brand facet is ETM's own live count for that facet within the current category or search result set, not an estimate.