Netshoes Brazil - Products, Prices, Stock & Reviews avatar

Netshoes Brazil - Products, Prices, Stock & Reviews

Pricing

from $1.50 / 1,000 product results

Go to Apify Store
Netshoes Brazil - Products, Prices, Stock & Reviews

Netshoes Brazil - Products, Prices, Stock & Reviews

Scrape sportswear and footwear from netshoes.com.br. Search by keyword with the store's own brand, size, colour and gender filters, or paste product and category links. Returns BRL price, was-price, discount, instalments, stock per size, colour variants, media, specs and reviews with fit feedback.

Pricing

from $1.50 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

3 minutes ago

Last modified

Categories

Share

Netshoes Scraper: Brazilian Sportswear Prices, Stock & Reviews

Netshoes Scraper turns netshoes.com.br, Brazil's sportswear and footwear store, into a clean product data API. Search by keyword with the store's own brand, department, size, colour and gender filters, or paste product, category, brand and search links and scrape them directly. Every product colour comes back as one row with price in BRL, was-price, discount, instalment terms, stock, colour variants and media, plus optional full specifications and customer reviews with the store's own size and fit feedback, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Two ways to find products. Search by keyword, or paste product, category, brand, campaign or search links and scrape them directly.
  • One row per product colour, at no extra cost. Identity, current price and was-price in BRL, discount, instalment terms, stock per size and colour siblings are always included.
  • Full detail on demand. Switch on description, specifications, materials, per-size stock and the whole image gallery per run, and pay only for what you use.
  • Customer voice included. Ratings, written reviews and the store's own size and fit surveys, so you can tell whether a product runs small before you buy it.
  • Built for monitoring. Incremental mode returns only new, changed, restocked and, optionally, delisted products on a schedule, and a refused run fails loudly instead of returning an empty dataset.
  • Brazil-native filters. Brand, department, product type, numeric shoe size, colour and gender all match the store's own Portuguese vocabulary and spelling, resolved for you at run time.
  • Resume a large pull. An interrupted run can continue from where it left off without paying twice for products already collected.

Use Cases

  • Price and discount monitoring: track price drops, instalment terms and promotional badges across a brand or department on a schedule.
  • Competitive intelligence for sportswear sellers: compare assortment, pricing and stock across competing brands sold on the same marketplace.
  • Size and fit research: mine the store's own fit surveys and reviews to see which products run small or large before recommending them.
  • Stock and restock alerts: watch specific products or a whole category for sold-out and back-in-stock changes with Incremental mode.
  • Catalogue and content teams: build a structured feed of descriptions, specifications and images for a product comparison site or app.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
sku"ABC-12345-001" (one colour of a product; this is the row's identity)
productCode"ABC-12345" (the product family, all colours)
title"Sample Running Sneaker"
brand"Sample Brand"
department / productType"Running" / "Tenis"
urlNetshoes link to this product
currency"BRL"
price249.9
originalPrice349.9
discountAmount / discountPercent / onSale100.0 / 29 / true
paymentMethod / paymentMethodPrice"PIX" / 237.41
installments{"count": 3, "amountEach": 83.3, "total": 249.9, "interestFree": true}
sellerName / soldByStore"Netshoes" / true (marketplace sellers are named)
inStock / sizestrue / ["38", "39", "40", "41", "42"]
sizesInStocksizes actually available to buy right now (needs a product page read: Read each product's page or Fetch customer reviews)
color / colorVariantsmain colour, plus the same product's other colours with their own links
freeShipping / fastFulfilment / preSaleshipping and launch policy for this listing
badges["NOVIDADE"]
featuredImage / imagesproduct photo and the full gallery
rating / reviewCount4.6 / 120
variantsstock per size, each with its own SKU, price and EAN (needs a product page read)
specs / material / technology / weightGrams / originfull copy and physical specifications (with Read each product's page)
reviews / fitFeedback / percentRecommendedwritten reviews and the size and fit survey (with Fetch customer reviews and fit feedback)
changeType / changedFields / firstSeenAt / lastSeenAtincremental mode: "NEW" / [] / timestamps

Reading a product's own page also adds longDescription, highlights, dimensionsCm, warranty, releaseDate, sizeType, sizeGuideAvailable, thumbnails, videos, breadcrumb, categoryPath, installmentPlans, variantSku, genders, brandSlug and additionalDeliveryDays. Reviews add ratingHistogram, reviewsReturned, reviewsTruncated and answered questions, with the asking customer's email address always dropped. Every record also carries detailsFetched, sourceUrl, searchTerm, reviewsRequested and scrapedAt.

How to Use

  1. Pick a mode: search (by keyword) or url (paste Netshoes links).
  2. Fill in the fields for that mode, then apply any brand, department, size, colour, gender or price filters you want; they apply to both modes.
  3. Set Max products to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by keyword:

{
"mode": "search",
"queries": ["tenis adidas"],
"maxItems": 50
}

Search with filters, discounted only:

{
"mode": "search",
"queries": ["chuteira campo"],
"brand": "Nike",
"size": "40",
"onSaleOnly": true,
"maxItems": 100
}

Paste links, with full product-page detail:

{
"mode": "url",
"urls": [
"https://www.netshoes.com.br/busca?q=tenis%20adidas",
"https://www.netshoes.com.br/futebol/chuteiras"
],
"fetchDetails": true
}

Monitor a category on a schedule, reviews included:

{
"mode": "url",
"urls": ["https://www.netshoes.com.br/running/tenis"],
"fetchReviews": true,
"incrementalMode": true,
"emitExpired": true
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/netshoes-scraper").call(run_input={"mode": "search", "queries": ["tenis adidas"], "maxItems": 50})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["title"], product["price"], product["inStock"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/netshoes-scraper').call({ mode: 'search', queries: ['tenis adidas'], maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Keeping a run cheap

A result page already carries price, discount, sizes, images and rating for about 100 products, at no extra cost. Read each product's page and Fetch customer reviews each need one extra page per product and are billed with one Product page detail event per product that reaches the dataset. They share that one page, so turning both on costs the same as turning on either. A pasted product link always reads the product page, because there is no result card behind it to fall back on, so it is billed one Product page detail event whenever it reaches the dataset, whatever the toggle says.

How Max products and Max result pages shape a run

When Max products is set, every keyword and link in a run gets its own slice of it, split evenly across them, so one popular search cannot use up the whole run and starve the rest. A search reads whole result pages and stops paging once the products it has read reach its slice. That count covers every product on those pages not already collected earlier in the run, before your filters and Incremental mode are applied, not just the ones that reach the dataset. The run as a whole still stops at Max products counted on rows actually returned.

Two consequences are worth knowing:

  • A search can stop paging early. Products on a page that your Brand, Size, Colour, price or other filters drop, or that Incremental mode classifies UNCHANGED (and suppresses), still count toward that search's slice. A page of such products can end the search before a later page with products you would actually get is ever read, so the run returns fewer rows than Max products allows.
  • Overlapping searches can miss products. When the last page a search reads holds more products than its remaining slice, the extra ones are not returned but are still marked as seen, so a later keyword or link in the same run that finds them skips them too.

If you run several overlapping keywords or links together, or combine a cap with strict filters or Incremental mode, and need a complete result, run them one at a time, or set Max products to 0 and bound the run with Max result pages instead: without a cap every product on every page read is processed.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips everything already collected there, so you don't pay twice.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search or links. Each product is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), REAPPEARED or EXPIRED (only after a run that scanned the whole tracked scope, and only with emitExpired). stateKey names or shares the stored state. With Incremental mode off, output is exactly as before.

One cap does not apply to EXPIRED rows: they are computed from your whole tracked baseline once a run has scanned it in full, and every one of them is returned and billed in that run, on top of whatever Max products allowed the live scan itself to collect. A monitoring run with a small Max products and a large tracked baseline that has genuinely shrunk can therefore return far more rows than Max products says, all of it EXPIRED. Turn off Emit expired if you need a hard ceiling on run size and cost, or budget for it deliberately.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify, Settings, Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch for keywords plus filters, or url to scrape pasted Netshoes links.
queriesarray["tenis adidas"]Search keywords (search mode). Portuguese words match far more than English ones.
urlsarraysampleNetshoes product, search, category or brand links (url mode).
brandstring(none)Keep only products of this brand, for example Nike, Adidas or Olympikus.
categorystring(none)Keep only products in this department, as the store names it, for example Running or Futebol.
productTypestring(none)Keep only this type of product, as the store names it, for example Tenis or Chuteiras.
sizestring(none)Keep only products offered in this size, for example 40 or M.
colorstring(none)Keep only products in this main colour, in Portuguese, for example Preto or Azul.
genderstring(empty, any)feminino, masculino, menina, menino, bebe_menina or bebe_menino.
minPriceinteger(none)Only keep products at or above this price, in BRL.
maxPriceinteger(none)Only keep products at or below this price, in BRL.
inStockOnlybooleanfalseKeep only products that can be bought right now.
onSaleOnlybooleanfalseKeep only products whose current price is below their was-price.
sortBystringrelevancerelevance, best_sellers, new_releases, offers, review_stars, price_asc or price_desc.
fetchDetailsbooleanfalseRead every product's own page for full description, specifications, per-size stock and the full gallery.
fetchReviewsbooleanfalseAlso collect customer reviews, the per-star breakdown and the size and fit surveys.
maxReviewsPerProductinteger20Cap on reviews collected per product when reviews are fetched.
maxItemsinteger20Maximum number of products to return across the whole run. 0 = unlimited.
maxPagesinteger0Maximum result pages per keyword or link. 0 = unlimited.
resumeFromRunIdstring(none)Continue one interrupted run without re-collecting or re-billing its products.
incrementalModebooleanfalseReturn only new and changed products on scheduled runs.
stateKeystring(none)Name or share an incremental-mode state.
emitUnchangedbooleanfalseAlso return (and bill) unchanged products.
emitExpiredbooleanfalseAlso return (and bill) products no longer found after a full scan.
proxyobject{"useApifyProxy": true}Connection settings.
mcpConnectorsarray(none)Optional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which products are created.
maxNotifyListingsinteger50Cap on products written to each connector per run.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"sku": "ABC-12345-001",
"variantSku": "ABC-12345-001-40",
"productCode": "ABC-12345",
"title": "Sample Running Sneaker",
"brand": "Sample Brand",
"brandSlug": "sample-brand",
"department": "Running",
"productType": "Tenis",
"genders": ["Masculino"],
"categoryPath": ["Running", "Tenis", "Sample Brand", "Preto"],
"url": "https://www.netshoes.com.br/p/ABC-12345-001",
"currency": "BRL",
"price": 249.9,
"originalPrice": 349.9,
"discountAmount": 100.0,
"discountPercent": 29,
"onSale": true,
"paymentMethod": "PIX",
"paymentMethodPrice": 237.41,
"installments": {"count": 3, "amountEach": 83.3, "total": 249.9, "interestFree": true},
"sellerName": "Netshoes",
"soldByStore": true,
"inStock": true,
"sizes": ["38", "39", "40", "41", "42"],
"sizesInStock": ["38", "39", "41", "42"],
"variants": [
{"sku": "ABC-12345-001-40", "size": "40", "available": true, "price": 249.9, "originalPrice": 349.9, "ean": "7890000000001"}
],
"color": {"name": "Preto+Branco", "primaryName": "Preto", "primaryHex": "#000000", "secondaryName": "Branco", "secondaryHex": "#ffffff"},
"colorVariants": [
{"sku": "ABC-12345-002", "colorName": "Azul", "url": "https://www.netshoes.com.br/p/ABC-12345-002", "available": true}
],
"freeShipping": true,
"fastFulfilment": false,
"additionalDeliveryDays": 0,
"preSale": false,
"badges": ["NOVIDADE"],
"featuredImage": "https://static.netshoes.com.br/sample/ABC-12345-001/zoom1.jpg",
"images": ["https://static.netshoes.com.br/sample/ABC-12345-001/zoom1.jpg"],
"material": "Textil",
"technology": "Sample Cushioning",
"weightGrams": 620,
"origin": "Nacional",
"sizeGuideAvailable": true,
"rating": 4.6,
"reviewCount": 120,
"percentRecommended": 92,
"fitFeedback": [
{"topic": "Tamanho", "average": 3.1, "midpoint": 3.0, "scaleLow": "Justo", "scaleMid": "Na Medida", "scaleHigh": "Largo", "responses": 120}
],
"reviewsRequested": true,
"reviewsReturned": 5,
"reviewsTruncated": true,
"changeType": "NEW",
"changedFields": [],
"firstSeenAt": "2026-09-30T12:00:00Z",
"lastSeenAt": "2026-09-30T12:00:00Z",
"scrapedAt": "2026-09-30T12:00:00Z"
}

Plan Requirement

The default Connection setting is the right one and needs no change: leave the proxy group list empty. Netshoes refuses ordinary connections on its result and product pages, so if the default connection is refused, the run moves once to Apify Proxy's enhanced group and stays there for the rest of the run. That fallback is billed on your own Apify plan at a higher cost per request. If your plan does not include it, the run fails with a clear message instead of returning an empty dataset. Picking a residential group is not needed for this store.

FAQ

How much does it cost?

You pay per product returned in the dataset, plus one Product page detail event per product whose own page is read for full description, specifications, per-size stock or reviews. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.

This actor collects only publicly available product data. You are responsible for how you use it: follow Netshoes' terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Prices and specifications are generally facts, but product photos and brand names may be subject to third-party rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and restocked products, and unchanged ones are not billed unless you turn on Emit unchanged.

Why do my search keywords return so few results?

Netshoes is a Brazilian store, so Portuguese keywords match far more than English ones: "tenis adidas" finds thousands of matches, "adidas sneakers" finds almost none. A few popular phrases are also mapped by the store to a promotional page instead of a product list; when that happens the run says so and names the page, instead of reporting an empty catalogue.

Why did my run fail instead of returning an empty dataset?

If the store refuses every request, the run stops with a clear message so "no matches today" is never confused with "nothing could be read". Run it again in a few minutes. If only some pages could be read, you still get what was found, and the run tells you the result is incomplete.

Why did an incremental run return many more products than Max products?

Products marked EXPIRED (previously tracked but no longer found after a full scan) are returned and billed in addition to whatever Max products allowed the live scan to collect; only the live scan side of a run is capped. Turn off Emit expired if you need a hard ceiling on run size and cost, or budget Max products with that in mind.

With Max products set, each search or link gets a slice of it, and that slice counts every not-yet-collected product on the pages the search reads, before filters and Incremental mode are applied, not only the products that reach the dataset. A page of filtered-out or UNCHANGED products can therefore end a search before its later pages are read. And when a search's last page holds more products than its remaining slice, the extra ones are marked as seen without being returned, so a later, overlapping search in the same run skips them. Run overlapping searches or links separately, or set Max products to 0 and bound the run with Max result pages, if you need a complete result.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

๐Ÿ”— Want more sports data?

Pair this actor with these related scrapers from the same team:

๐Ÿ›’ Americanas Brazil
Scrape Americanas Brazil (americanas.com.br) by keyword, department or pasted link...
โšฝ Whatnot Scraper
Scrape Whatnot live and upcoming shows, queued items and lots, and seller profiles...
๐Ÿฅฆ Lidl.es Products, Weekly Offers, Prices & Reviews Scraper
Scrape Lidl.es grocery and non-food products across weekly offers, tools, home, garden...
๐Ÿ”Œ Casas Bahia Brazil Electronics & Home Goods Scraper
Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand...
โšฝ Globo Esporte Scraper
Scrape public sports content from ge.globo.com, including news, videos, matches and feed...
๐Ÿ›’ Drogasil Brazil Pharmacy, Health & Beauty Scraper
Scrape Drogasil (drogasil.com.br) medicines, health and beauty products by keyword...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support & custom scrapers

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com or message Telegram @abotapi.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.