Elektra Mexico Product & Price Scraper avatar

Elektra Mexico Product & Price Scraper

Pricing

from $0.28 / 1,000 product scrapeds

Go to Apify Store
Elektra Mexico Product & Price Scraper

Elektra Mexico Product & Price Scraper

Elektra Mexico price and stock scraper: search elektra.mx by keyword and get one row per SKU with price and list price in MXN, discount, stock, seller, EAN, brand, category, interest-free instalments and URL. Sort by price, sales, discount or newest. For daily price monitoring.

Pricing

from $0.28 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Search Elektra (Mexico's large electronics, furniture and appliance retailer, on the VTEX commerce platform) for one or more keywords and get one flat row per SKU: the selling price and the list price in MXN, the discount percent, whether it is in stock and how many, the seller, EAN barcode, brand, category, the most interest-free instalments (meses sin intereses), image and the product URL. Run it on a schedule and diff the dataset to get an Elektra price and stock watch: track what a laptop, a fridge or a phone costs today against last week, and which SKUs went out of stock.

No account, no API key, no login, no browser. One request returns 50 products.

Input

FieldNotes
searchTermsOne or more search terms, one per line. Required. Spanish and brand names work (laptop, refrigerador samsung, iphone 16). A SKU found by two terms is returned once, under the first. Elektra matches loosely: laptop finds about 1,400 products, many of them backpacks and stands.
maxItemsRows to read per search term (default 100, up to 10,000). A row is a SKU, so a product with six colours is six rows.
sortrelevance (default), best-selling, price-asc, price-desc, newest, biggest-discount.
inStockOnlySkip SKUs Elektra reports as unavailable (not returned, not charged). Off by default.
proxyConfigurationApify datacenter proxy by default.

About the sorts

Each sort was checked against the live catalogue (2026-10-15).

  • price-asc and price-desc are checked on every page: the prices must run mostly in order, and the actor fails the term (at no charge) rather than return rows in an order that was not asked for. The check is deliberately loose, because Elektra's own price sort has the odd out-of-place row (1 in 1,423 rows ascending, 4 descending for laptop): the sort key is the indexed price and the displayed offer is live.
  • newest follows the product's release date and biggest-discount follows the discount percent; both were confirmed to be in order on 150 rows of laptop.
  • best-selling is Elektra's OrderByTopSaleDESC. It differs from the default order; the response carries nothing to check it against.
  • Elektra also has a score sort, but it returns exactly the same rows in the same order as best selling (identical on four terms), so it is not offered.

Output

Prices are numbers in Mexican pesos; currency is always MXN.

FieldNotes
query, positionThe search term that first found the SKU, and where its product sat in Elektra's result list for that term and sort (1 is the first result). Sibling SKUs share a position.
product_id, sku_idElektra's product id and the SKU id (VTEX itemId). sku_id is unique per row in a run.
name, sku_name, variantThe product name, the SKU's full name, and the variation attributes as sent (Capacidad: 128 GB, Carrier: Desbloqueado, Color Telefonía: Rosa). variant is null when Elektra sends no variation list for the SKU, which includes some SKUs of products that do list one for their siblings.
ean, brandThe SKU's barcode, and the brand. Null when Elektra sends none.
url, image_urlThe https://www.elektra.mx/<slug>/p product page, and the first SKU photo.
category, category_pathThe most specific category and its breadcrumb (["Cómputo", "Accesorios y periféricos", "Mochilas y Maletines"]).
price, list_priceThe selling price now, and the price before the promotion. They are equal when the SKU is not discounted. Null when the SKU has no price (see below).
on_sale, discount_percenton_sale is true when list_price is above price. discount_percent is worked out from the two prices (one decimal place) and is null when the SKU is not on sale, never 0.
in_stock, stock_quantityElektra's availability flag and quantity for the chosen seller's offer. stock_quantity is 99999 for stock the seller does not count (about 1 offer in 9 in a sample of 1,064 SKUs); it is passed through as sent.
seller_id, seller_name, sold_by_elektraThe seller whose offer the row shows. Id 1 is Elektra itself; any other is a marketplace seller.
max_interest_free_installmentsThe most instalments offered at 0% interest (meses sin intereses). 1 means pay in full only; 24 is the most seen. Null when the offer has no instalment table.
release_dateThe product's release date in Elektra's catalogue, YYYY-MM-DD.

Example row (laptop, position 1):

{
"query": "laptop",
"position": 1,
"product_id": "1301907570",
"sku_id": "1301907570",
"name": "Kånken Laptop 13\"",
"sku_name": "Kånken Laptop 13\"",
"variant": null,
"ean": "7323450785680",
"brand": "GENERICA",
"url": "https://www.elektra.mx/knken-laptop-13-1301907570/p",
"image_url": "https://elektra.vteximg.com.br/arquivos/ids/33077112/61UucXzP5dL.jpeg.jpg?v=639260175163000000",
"category": "Mochilas y Maletines",
"category_path": ["Cómputo", "Accesorios y periféricos", "Mochilas y Maletines"],
"currency": "MXN",
"price": 3719.0,
"list_price": 4091.0,
"on_sale": true,
"discount_percent": 9.1,
"in_stock": true,
"stock_quantity": 10,
"seller_id": "711160",
"seller_name": "ecomsellers",
"sold_by_elektra": false,
"max_interest_free_installments": 1,
"release_date": "2026-09-26"
}

Why one row per SKU

VTEX nests a product over its SKUs, and the SKU is what has a barcode, a price and a stock level. About 1 product in 4 (of 500 sampled) has several SKUs, up to 19: an "iPhone 15 Pro Reacondicionado" is ten different phones. One row per product would show one price for all ten. Most products have one SKU and give one row.

Honest nulls

A field Elektra did not send is null, never 0 or "".

  • Unpriced SKUs. Elektra sends Price: 0 and ListPrice: 0 for a SKU it cannot currently sell, which was about 1 SKU in 4 in a sample of 1,064 The actor reports a null price, not a price of zero pesos, and still returns the row with in_stock: false, because a stock watch needs it. Set inStockOnly to skip them.
  • Odd offers. A few marketplace SKUs are flagged available with no price (price: null, in_stock: true), and a few Elektra SKUs carry a price but are flagged unavailable. Both are reported as sent.
  • Several sellers. A SKU can list Elektra and a marketplace seller. The row shows the seller Elektra marks as the default (when none is marked, the first seller with a price), because the default is the one the site sells from.

Pricing

Pay per event:

  • $0.002 per run (actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing.
  • $0.00028 per row written (product-scraped), i.e. $0.28 per 1,000 rows. A row that is not written is not charged.

How it fetches

It calls the VTEX catalog JSON behind Elektra's own search page (www.elektra.mx/api/catalog_system/pub/products/search?ft=<term>&_from=0&_to=49), 50 products per request. Measured 2026-10-15: HTTP 200 or 206 and JSON from a plain home connection with a Chrome TLS fingerprint, and a JSON product array from an Apify datacenter exit through the in-platform probe the same day. HTTP 206 Partial Content is the normal answer for a full page; the last page is 200. A refusal (403, 429, 202, 5xx), or a 200 that is not the product array, is treated as the address being blocked, and the actor rotates to a fresh one and retries. Elektra occasionally answers a good request with a 500 (The operation was canceled.); that is retried the same way.

Things worth knowing, all measured:

  • Depth ceiling: 2,550 products per term. VTEX refuses _from above 2,500 (HTTP 400), so a term can be read to 51 pages of 50 however many products it matches (mueble matches 4,329). The actor stops there and logs a warning when a term had more matches than that; make the term more specific (add a brand, model or size) to see the rest. maxItems counts rows, which are SKUs, so a term can be exhausted before maxItems is reached.
  • Repeated products. Elektra's relevance order repeats rows: a walk of mueble to the ceiling read 2,550 products of which 2,293 were distinct. The actor returns each SKU once and ends a term only after three pages in a row bring nothing new. The price sort had no repeats over 2,550 rows. To read as much of a big term as possible, use a price sort.
  • Page size. VTEX serves at most 50 per page (_to above 50 is HTTP 400), so the actor never asks for more.
  • No matches. A term with no results is a normal empty answer ([]), not an error. It is logged and the run continues with the next term. A page past the end of a smaller result set is also [].
  • The match count moves. laptop read 1,425 matches on one request and 1,423 on the next; the count in the log is informational.
  • Heavy pages. One page of 50 products is 1 to 2 MB of JSON, so a full 2,550-product term moves around 80 MB.
  • Not offered. Category and price-range filters (fq=) exist in VTEX but are not wired into this actor. An empty search term would list the whole 660,000-product catalogue and is refused.