Skip to content
    ↑↓ to choose · Enter to open

    · 12 min read

    ETM Electrical Equipment Scraper: 55 Data Fields per Record (2026)

    By CrawlerBros Engineering Team

    ETM.ru catalog extractions cost $5.00 per 1,000 results on the free-plan price, returning 55 output fields including technical documents and multi-warehouse logistics data. The Actor operates across four distinct extraction modes, handling free-text searches, category trees, faceted brand breakdowns, and deep product specifications. Each record includes pricing in Russian rubles, packaging dimensions, and manufacturer analog recommendations. This Actor is built for B2B procurement teams, logistics analysts, and electrical pricing operations. It is not for anyone who needs buyer contact details, which the records do not include.

    Try it: open ETM Electrical Equipment Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try ETM Electrical Equipment Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of ETM Electrical Equipment Scraper a month, before run-start charges and platform usage.

    The example request further down caps maxItems at 10, so a first run returns at most 10 results and costs at most $0.05 in result charges. That is enough to see the real shape of the data before deciding anything.

    ETM Electrical Equipment Scraper was last updated on 2026-07-24. It is one of 1,725 Actors CrawlerBros publishes on Apify, which together have 686,269 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run ETM Electrical Equipment Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    Your dataset bill is determined directly by maxItems and the volume of identifiers passed in productUrls. Controls that expand individual record depth, such as pulling warehouse splits or PDF documentation, do not add result charges. The cheapest evaluation strategy is running a test batch with maxItems capped at 10.

    How do you run ETM Electrical Equipment Scraper from the API?

    The schema marks 2 of its 7 controls as required: mode, proxyConfiguration. Nothing in the payload below is illustrative. Those are the schema's prefilled defaults for ETM Electrical Equipment Scraper, so the request works once your token is in place.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~etm-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search","searchQuery":"автомат","category":"501010_avtomaticheskie_vykljuchateli","productUrls":["https://www.etm.ru/cat/nn/7416742"],"maxItems":10,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"RU"}}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search",
      "searchQuery": "автомат",
      "category": "501010_avtomaticheskie_vykljuchateli",
      "productUrls": [
        "https://www.etm.ru/cat/nn/7416742"
      ],
      "maxItems": 10,
      "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
      }
    }
    
    run = client.actor("crawlerbros~etm-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search",
      "searchQuery": "автомат",
      "category": "501010_avtomaticheskie_vykljuchateli",
      "productUrls": [
        "https://www.etm.ru/cat/nn/7416742"
      ],
      "maxItems": 10,
      "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
          "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
      }
    }
    
    const run = await client.actor('crawlerbros~etm-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    Because the call is synchronous, your client waits for the whole run. Keep it for exploration. For scheduled work, start the run without waiting and collect the dataset afterwards, so network trouble costs you a retry rather than the results.

    Which ETM Electrical Equipment Scraper inputs matter, and which can you skip?

    The mode selector governs the entire execution flow and defines whether the Actor performs broad keyword discovery, hierarchical category navigation, or deep SKU extraction. For category browsing, always populate category, while brand should remain empty on your first run until valid brand filter slugs are identified. Leave proxyConfiguration on its residential Russian preset, as non-Russian IP addresses will fail.

    • mode (string): What to fetch from ETM.ru. Default: "search".
    • searchQuery (string): Free-text search term, e.g. автомат (circuit breaker), кабель (cable), розетка (socket). Default: "автомат".
    • category (string): Category id+slug (e.g. 501010_avtomaticheskie_vykljuchateli) or a full catalog URL (e.g. https://www.etm.ru/catalog/501010_avtomaticheskie_vykljuchateli). Top-level examples: 010_elektrika_i_svet (electrics & light), 030_vodosnabzhenie_i_vodootvedenie (water supply), 050_instrument_i_osnastka (tools), 080_sistemy_bezopasnosti (security systems). For mode=categoryFacets, either this or searchQuery may be given.
    • brand (string): Restrict category browsing to one manufacturer. Accepts <brandId>_<brandSlug> (e.g. 432_iek) or a full brand-filtered catalog URL (e.g. https://www.etm.ru/catalog/5004_avtomaticheskie_vykljuchateli-432_iek). Get real brand ids/slugs for a category from mode=categoryFacets's brands[].brandFilter field first.
    • productUrls (array): Product page URLs (e.g. https://www.etm.ru/cat/nn/7416742) or bare numeric product IDs (e.g. 7416742). Default: [].
    • maxItems (integer): Hard cap on emitted records. Default: 10.
    • proxyConfiguration (object): ETM.ru geo-blocks non-Russian IP addresses at the network edge (returns HTTP 444 / a "forbidden IP address, possible VPN" page). A residential proxy located in Russia is required to reach the site - see the README "Data Source" section for details. Default: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"RU"}.

    Fixed-choice controls: mode accepts search (Search products (free-text query)), byCategory (Browse a category), productDetails (Fetch product details (URLs or IDs)), categoryFacets (Get subcategory/brand breakdown (category or search query)).

    What does ETM Electrical Equipment Scraper return?

    Output items deliver complete B2B electrical specs, GOST or EAC certificate links, weight and volume measurements per packaging tier, and regional warehouse quantities. The output does not contain buyer contact details, seller account credentials, or transactional checkout histories.

    • 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
    • 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
    • stockByWarehouse[] - {warehouseType, quantity, deliveryTime} (or `{warehouseType,
    • analogs[] - real substitute/equivalent products ETM itself recommends, shaped
    • ratingValue, reviewCount - only present when the product has actual customer
    • discontinued, isNew
    • externalArt, certificateName, relatedProducts[] - occasionally present
    • scrapedAt
    • queryType (category or search), query (the input you gave)
    • categoryCode, categoryName, categoryUrl, categoryPath[] - the category itself
    • subcategories[] - {categoryCode, categoryName, categorySlug, productCount, categoryUrl}
    • brands[] - {brandId, brandName, brandSlug, productCount, brandFilter} for every
    • scrapedAt

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open ETM Electrical Equipment Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Set mode to categoryFacets with your target category to extract the live subcategories and valid brandFilter identifiers.
    2. Verify the output contains non-empty subcategories or brands arrays with valid productCount numbers.
    3. Switch mode to byCategory, setting category and optionally brand using the exact brandFilter value discovered in step 1.
    4. Set maxItems to 10 for an initial verification pass to keep result charges low.
    5. Confirm that emitted records contain non-empty productId, price, and currency fields in the dataset.
    6. Extract the returned productUrl or numeric productId values into the productUrls array and run mode set to productDetails.
    7. Verify that the detail records populate specifications, stockByWarehouse, and packages arrays before running larger batches.

    How do you apply it? Three worked playbooks

    These are ETM Electrical Equipment Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Price monitoring

    Outcome: Track electrical-equipment pricing across brands

    Configure: Set mode to byCategory, category to "501010_avtomaticheskie_vykljuchateli", and maxItems to 100.

    Working method: Execute scheduled daily category runs across chosen electrical categories, store productId, price, and priceRetail, then compute day-over-day price variance.

    Deliverable: A structured pricing dataset mapping SKU and brand to current RUB prices with promotional flags.

    Stop condition: Abort when more than 15% of active listing records return null or omitted price fields.

    Use case 2: Catalog enrichment

    Outcome: Pull specifications and certificates for procurement systems

    Configure: Set mode to productDetails, productUrls to an array of specific URLs or numeric product IDs, and maxItems to 50.

    Working method: Ingest target SKUs from your internal inventory, pass them into productUrls, and extract nested specifications, certificates, and packages logistics data.

    Deliverable: A standardized JSON catalog feed populated with technical parameters, PDF certificate URLs, and package dimensions.

    Stop condition: Stop the ingest pipeline if specifications array is entirely missing across consecutive productDetails responses.

    Use case 3: Market research

    Outcome: Analyze category assortment and brand coverage

    Configure: Set mode to categoryFacets, category to "010_elektrika_i_svet", and maxItems to 10.

    Working method: Query high-level category nodes using categoryFacets mode, aggregate productCount figures across all returned brands and subcategories, and benchmark vendor share.

    Deliverable: A market assortment report containing brand distribution metrics and category product counts.

    Stop condition: Stop when categoryFacets returns empty subcategories and brands arrays for a known category node.

    What breaks, and how do you design around it?

    When querying bare numeric IDs in productUrls, validate the returned productId against your input list because ETM may serve fallback items instead of returning 404 responses. To avoid empty category runs when filtering by brand, query categoryFacets first to extract verified brandFilter strings. If rate limits or edge restrictions trigger on non-Russian requests, ensure residential Russian proxy routing remains active.

    When should you not use ETM Electrical Equipment Scraper?

    Do not use this Actor if your target inventory consists of generic electronics or appliances where retail-focused retailers like Citilink Scraper - Russian Electronics Store Products or M.Video Scraper offer more specialized category depth. For electrical distribution data from a different supplier network, consider Russkiy Svet (rs24.ru) Electrical Equipment Scraper which provides ~850,000 SKUs. Finally, avoid this tool if you cannot route requests through Russian residential IPs, as non-Russian traffic is blocked at the network edge.

    What should you check before trusting the output?

    • Check that price is numeric and currency equals RUB on all active inventory items.
    • Verify that stockByWarehouse contains at least one structured warehouse entry with quantity or deliveryTime when availabilityText indicates stock.
    • Stop the run if productUrls returns fallback product records where productId does not match the requested target ID.
    • Alert if mode set to byCategory returns empty datasets repeatedly due to an invalid brand filter slug.

    None of this proves a record is correct. It gives a scheduled ETM Electrical Equipment Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    What does scraping 1,000 items cost?

    On the free-plan price, 1,000 results cost $5.00 in result charges. Apify's free plan includes $5.00 of monthly usage with no credit card, which can cover up to 1,000 results. Actor memory usage and run-start fees are billed separately on top of these result counts.

    Why is a residential proxy in Russia required?

    ETM.ru enforces network-edge geo-blocking against non-Russian IP ranges, returning HTTP 444 or access forbidden responses. To reliably extract catalog pages and product details, proxyConfiguration must be configured to route traffic through Russian residential proxies.

    How do I find the correct brand parameter for category browsing?

    Run mode set to categoryFacets on your target category first. The resulting record provides a brands array where each entry contains a verified brandFilter string, such as 432_iek, ready to paste directly into byCategory runs.

    Why are some product records missing priceRetail or specifications?

    ETM.ru only provides priceRetail when a distinct retail price is published alongside wholesale pricing. Furthermore, empty or missing fields are omitted from output records rather than filled with null values, so products without published specs return only listing-level data.

    What happens if I submit an invalid product ID?

    ETM.ru's web servers may resolve an unrecognized bare numeric ID to a default or fallback product page rather than returning an HTTP 404 error. Always inspect the returned productId or productUrl to confirm the extracted record matches your requested SKU.

    Where to go next

    When you are ready to run it, open ETM Electrical Equipment Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the ETM Electrical Equipment Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-28.

    • Actor last updated by its maintainers on 2026-07-24.

    • Run outcome figures cover the 30 day public window ending 2026-09-28.

    • ETM Electrical Equipment Scraper on Apify

    Featured actors

    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.

    Run on Apify ↗