PcComponentes Scraper - Prices, Discounts, Variants & Reviews avatar

PcComponentes Scraper - Prices, Discounts, Variants & Reviews

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
PcComponentes Scraper - Prices, Discounts, Variants & Reviews

PcComponentes Scraper - Prices, Discounts, Variants & Reviews

Scrape PcComponentes (pccomponentes.com) products: current price plus strike-through reference-price discount, configuration variants with price and availability, brand, category, and reviews with rating. Search by keyword/category or paste product and listing links.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

16 hours ago

Last modified

Features

Limited permissions

Share

PcComponentes Scraper: Prices, Discounts, Variants and Reviews

PcComponentes Scraper turns pccomponentes.com into structured product data. Search by keyword or category, or paste product and listing links directly, and get the current price alongside the site's own strike-through reference price and computed discount whenever a product is genuinely marked down, plus the product's own rating from every search or category result. Turn on full detail for configuration variants (RAM, storage, colour) each with its own price and availability, and written reviews. Export to JSON, CSV or Excel, pull the results through the API, or pipe them into the apps you already use.

Why This Scraper?

  • Was-price and discount, structured, never fabricated. When a product is marked down against the site's own reference price, both prices are captured plus the computed discount amount and percentage. A full-price product simply carries null, nothing is guessed.
  • Real narrowing you can trust. A single brand and a keyword price range narrow through the site's own catalog navigation or search facets; multiple brands, discount-only, and every URL-mode filter are checked against each product's own values instead of guessed at.
  • Configuration variants. Laptops, PCs and similar products return every configuration, RAM, storage, colour or model, as its own variant, each with its own price and availability.
  • Reviews straight from the product page. Overall rating, rating count, and the product's own most recent written reviews (author, date, rating, body), reported directly by the site, not a separate review service.
  • Two ways in. Keyword or category search with real site filters (brand, price range, discount-only, sort), or paste any product or listing link and continue pagination automatically.
  • Optional export to your apps. Send results into Notion, Linear, Airtable, or any Apify MCP connector alongside the dataset.
  • Keeps going when a connection is refused. Each request gets several attempts on a different connection before giving up, and a sustained block stops retries for the rest of the run instead of grinding on uselessly, while whatever was already collected is kept.

Use Cases

  • Price trackers and deal aggregators: monitor current price against the site's own reference price on the products you care about, and only surface genuine discounts.
  • Retailers and resellers: benchmark competitor pricing and stock across a whole category or a shortlist of brands.
  • Comparison shopping tools: pull configuration variants (RAM, storage, colour) with their own price and availability, not just the base model.
  • Market researchers: collect ratings and written reviews to gauge sentiment on specific product lines.
  • Developers: feed a downstream app or bot with a live feed of category listings through the API.

Data You Get

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

FieldExample
productId / sku"884201" / "VNX3-14R7-32-1TB"
name"UltraNote X3 14in Gaming Laptop, Ryzen 7, 32GB, 1TB SSD"
brand"Vantrix"
category"PortΓ‘tiles"
url"https://www.pccomponentes.com/ultranote-x3-14-ryzen7-32gb-1tb-ssd"
price / currency799.99 / "EUR"
originalPrice / discountAmount / discountPercent999.99 / 200.00 / 20.0
isOnSpecialtrue
onlineAvailabletrue
freeShippingtrue
image / images"https://thumb.pccomponentes.com/sample/ultranote.jpg" / ["https://thumb.pccomponentes.com/sample/ultranote-1.jpg"]
descriptionfull product description text (only when Fetch full product detail is on)
ean / reference"8410000000019" / "VNX3REF001"
conditionType"new" ("refurbished" for a refurbished offer); on every row
condition / ratingRecommendPercent"new" / 92 (condition is the site's own grade, such as "reaconditioned-a" for a refurbished product, filled from the product page: always for pasted product links, and for search and category results only with Fetch full product detail; ratingRecommendPercent needs Fetch full product detail)
articleId / objectId"884201" / "884201#new" (#reac for a refurbished offer)
priceOld / discountsame values as originalPrice / discountPercent, for consumers of other PcComponentes datasets
availability / seller / mpn"IN_STOCK" (or "OUT_OF_STOCK"; empty when the site gives no stock signal for the product, as for most refurbished listings) / "PcComponentes" / "VNX3-14R7"
availabilityLocations["MURCIA"] (warehouse or store names the site lists for the product, when it lists any)
specs{"Memoria Ram": "32GB RAM", "Almacenamiento SSD": "1 TB SSD"} (the site's key specs; keyword search rows)
query / scraped_atthe keyword, category path or URL that produced the row / ISO timestamp
variants[{"axis": "Memoria Ram", "name": "64 GB RAM", "url": "https://www.pccomponentes.com/ultranote-x3-64gb", "price": 899.99, "available": true}]
rating / reviewCount4.6 / 342
reviews.averageRating / reviews.ratingCount / reviews.totalReviewCount4.6 / 342 / 58
reviews.items[][{"rating": 5.0, "body": "Sample review text describing the product.", "author": "Sample Customer", "date": "2026-03-11"}]

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

Detail fields (description, ean, reference, images beyond the single card image, variants, ratingRecommendPercent) appear only when Fetch full product detail is on, and are left out of the record entirely, not set to null, when the site has no value for them. reviews is always present: an empty shape when Fetch reviews is off, the full averageRating/counts/items shape when it's on. rating and reviewCount come with every search or category listing result regardless of either toggle; for a pasted single product URL, they are only populated when Fetch reviews is on. reviews.ratingCount counts every star rating the product has ever received, while reviews.totalReviewCount counts only the ratings that came with written text, a narrower, genuinely different number reported directly by the site.

How to Use

  1. Pick a mode: search (keyword and/or category) or url (paste product or listing links).
  2. Fill in the filters you want (brand, price range, discount-only, sort), and switch on full detail or reviews if you need them.
  3. Set Max products total to control run size and cost, then click Start.
  4. Download the dataset as JSON, CSV or Excel, or read it through the API.

Keyword search, first page, with reviews (default):

{
"mode": "search",
"searchTerm": "portatil gaming",
"maxItems": 20
}

Category browse, filtered to a brand, discounted items only, sorted by price:

{
"mode": "search",
"category": "portatiles",
"brands": ["Lenovo"],
"specialsOnly": true,
"sortBy": "PRICE_ASC",
"maxItems": 50,
"maxPages": 5
}

Full product detail (variants and description) and reviews for a pasted product link:

{
"mode": "url",
"urls": ["https://www.pccomponentes.com/portatil-alurin-flex-advance-amd-ryzen-5-7430-15-6-16-gb-512gb-windows-11-home"],
"fetchDetails": true,
"fetchReviews": true
}

Paste a category listing and keep paginating forward:

{
"mode": "url",
"urls": ["https://www.pccomponentes.com/categorias/monitores"],
"maxItems": 100,
"maxPages": 10
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/pccomponentes-com-scraper").call(run_input={"mode": "search", "searchTerm": "portatil gaming", "maxItems": 20})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"], product["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/pccomponentes-com-scraper').call({ mode: 'search', searchTerm: 'portatil gaming', maxItems: 20 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

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

URL shapes

URL mode with the urls field left untouched scrapes one example per shape below (the field's default), so a bare "mode": "url" run returns products from all three.

ShapeExample
Category listinghttps://www.pccomponentes.com/categorias/portatiles
Category listing, sorted (?sort=price_asc, price_desc, discount, top_rated, activation_date)https://www.pccomponentes.com/categorias/portatiles?sort=price_asc
Keyword searchhttps://www.pccomponentes.com/buscar/?query=portatil
Paginated category (continues forward from the page given)https://www.pccomponentes.com/categorias/portatiles?page=2
Older category link without /categorias/https://www.pccomponentes.com/portatiles
Single product pagehttps://www.pccomponentes.com/ultranote-x3-14-ryzen7-32gb-1tb-ssd

A link in any other shape is skipped with a warning in the run log naming that link, never silently.

Multiple URLs and page walking

In URL mode, Max products total is split evenly across the URLs you paste, so a short category doesn't hand its unused share to the next one. A client-side filter (multiple brands, discount-only, a price range in URL mode) can walk many pages looking for matches; the walk still stops at an internal safety cap of 200 pages even with Max pages per entry left empty.

Dataset views

The dataset has five ready-made views: Products (overview), Product details, Variants (one row per configuration), Reviews (one row per written review) and Changes since the last run (incremental mode), plus a Run summary record in the key-value store (OUTPUT). The default dataset items are unchanged by the views.

Detail enrichment billing

Each returned product is one Product result charge, and the run start is one Actor start charge. The detail-enrichment event is a separate, per-row charge, applied right after that product is saved to the dataset. A returned full row carries it when its product page loaded and:

  • Fetch reviews is on: always, including when the product has no written reviews (the row carries an empty reviews list); or
  • Fetch full product detail is on and the page yielded its detail fields.

It is not charged when the product page could not be loaded (the row still comes back with its listing-card data and only the Product result charge), when both toggles are off, or on Compact update rows. A pasted product link always reads the product page to build its row, but the enrichment charge still follows the two conditions above. Products that were not delivered are never charged. The Pricing tab shows the current rates.

Incremental changes and resume

For a schedule that watches the same search, turn on Incremental changes for scheduled runs. The first run returns every matching product as NEW; later runs return only NEW, UPDATED and REAPPEARED products, each with changeType, changedFields, firstSeenAt and lastSeenAt. Unchanged products are not returned and not billed. State is kept per search, filter and detail setup (or per State key you choose); caps such as Max products, sort order and the review limit never start a new baseline.

  • What counts as a change. By default any change to the product record returns UPDATED (price, reference price, discount, availability, name, rating, rating count, variants, details). The review texts, image addresses, the search label (query) and scraped_at never do; a new review still shows through reviewCount and rating. Price and availability only limits changes to price, reference price, discount, on-sale flag and availability, including each variant's price and availability. Ignore fields when detecting changes adds your own field names or dotted paths such as variants.name; they stay in the row.
  • Compact update rows. With Price and availability only, Compact update rows turns UPDATED and EXPIRED rows into short diffs (priceChanges, variantChanges with old and new values). NEW rows stay complete. Compact rows carry no details or reviews, so the detail and review enrichment is not charged for them.
  • Expired products. Emit expired products returns products that earlier runs found but the tracked listing no longer shows, marked EXPIRED. It means the listing dropped them, not that they are out of stock; use the availability fields for stock. It is only produced after a run read the whole listing: never when Max products, Max pages or a failed page cut the run short, when a pasted link starts at page 2 or later, or when Resume was used. Expire after N missed full scans waits for that many complete scans in a row.
  • Billing. Only returned rows are billed. UNCHANGED rows are suppressed (and not billed) unless Emit unchanged products is on; EXPIRED rows are returned, and billed, only with Emit expired products. The detail-and-review enrichment event is charged per returned full row, after the row is saved, exactly as described above. When details are off, an unchanged product's product page is not even fetched.
  • Example search. A search-mode run with no keyword, no More search keywords and no Category searches the example keyword and never reads or saves state, so it cannot change or expire a baseline. It is billed like any run: only the rows it delivers, exactly as described in Detail enrichment billing.
  • Resume. Resume from a previous run takes a run ID or dataset ID and skips the products that run already returned, so an interrupted pull continues without returning or billing them twice.

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 item pages should be created.

Leave the field empty to skip; it never changes the dataset output.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword and/or category) or url (paste product or listing links).
searchTermstring(none; prefill "portatil")Keyword for the site's own product search. Leave empty to browse Category instead. If search mode gets no keyword, no More search keywords and no Category, the run searches the example keyword portatil instead of returning nothing; it is billed like any run (rows delivered), and with Incremental mode on it neither reads nor saves state.
queriesarray(none)More keywords for the same run, searched in order together with Search keyword. Max products total caps the whole run and a product matched twice is returned once.
categorystring(none)A real pccomponentes.com category path, e.g. portatiles, monitores, placas-base. Ignored whenever Search keyword is set.
brandsarray(none; prefill [])Exact brand names to keep, e.g. Lenovo, HP. Applies in both search and URL mode.
minPricenumber(none)Only return products priced at or above this amount, in euros. Applies in both search and URL mode.
maxPricenumber(none)Only return products priced at or below this amount, in euros. Applies in both search and URL mode.
specialsOnlybooleanfalseKeep only products currently showing a genuine discount against the site's own reference price. Applies in both search and URL mode.
sortBystringRELEVANCERELEVANCE, PRICE_ASC, PRICE_DESC, DISCOUNT, TOP_RATED, or NEWEST. Category browsing uses the site's own sort. The site's keyword search has no sort option, so keyword results (up to Max pages per search) are collected and sorted by the actor before the first Max products total are returned; this reads every page up to the limit. In URL mode this is only a fallback: a pasted category URL's own sort wins when present.
urlsarrayone category, one sorted category and one keyword-search linkProduct, category listing or keyword-search pages to scrape (URL mode only). Pagination continues forward automatically from any ?page= already in the URL. An empty list stops the run with an input message.
fetchDetailsbooleanfalseAdds full description, reference/EAN, category name, image gallery, and every configuration variant. A pasted single product URL always loads its product page for price, stock and discount either way; description, EAN, gallery and variants still need this toggle on.
fetchReviewsbooleantrueFetches the product's most recent written reviews (rating and reviewCount already come with every search or category result regardless of this toggle; for a pasted product URL they need this toggle on). On by default, so most runs fetch this for every returned product unless it is turned off.
maxReviewsPerProductinteger20Cap on written reviews returned per product when Fetch reviews is on. 0 = all reviews the page shows (up to roughly 15). Accepts up to 1000; the site itself shows only about 15 per product.
maxPagesinteger(none)Stop after this many result pages per search/category/URL entry. Leave empty for no explicit limit; the run still stops at Max products total, or at the internal hard cap of 200 pages per entry.
maxItemsinteger20Hard cap on total products returned across every search/category/URL entry. 0 = unlimited, still bounded by the 200-page hard cap per entry.
proxyobject{"useApifyProxy": true}Connection settings. Choose the residential group or your own proxy URLs for the most reliable runs; see Plan Requirement.
resumeFromRunIdstring(none)Run ID or dataset ID of an earlier run; its products are skipped and not billed again.
incrementalModebooleanfalseReturn only NEW, UPDATED and REAPPEARED products on later runs of the same search.
stateKeystring(auto)Name a monitoring campaign to keep or share its state; empty derives it from the search, filters and detail settings. With Incremental mode on and your own State key, search mode needs a keyword, More search keywords or a Category: with none, the run stops with an input message and collects nothing.
emitUnchangedbooleanfalseAlso return UNCHANGED products (returned and billed).
emitExpiredbooleanfalseAlso return EXPIRED products after a run that read the whole listing (returned and billed).
changeScopestringallall or priceAndStock (only price, reference price, discount and availability decide UPDATED).
compactUpdatesbooleanfalseWith priceAndStock, UPDATED and EXPIRED rows are short diffs.
expireAfterMissedScansinteger1Complete scans a product must be missing from, in a row, before it is EXPIRED.
ignoreFieldsForChangesarray(none)Fields whose changes alone never return an UPDATED row (dotted paths allowed).
mcpConnectorsarray(none)Optional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items exported to each connector per run. Does not affect the dataset.

Output Example

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

{
"productId": "884201",
"sku": "VNX3-14R7-32-1TB",
"name": "UltraNote X3 14in Gaming Laptop, Ryzen 7, 32GB, 1TB SSD",
"brand": "Vantrix",
"category": "PortΓ‘tiles",
"articleId": "884201",
"objectId": "884201#new",
"conditionType": "new",
"availability": "IN_STOCK",
"availabilityLocations": ["MURCIA"],
"seller": "PcComponentes",
"mpn": "VNX3-14R7",
"specs": { "Memoria Ram": "32GB RAM", "Almacenamiento SSD": "1 TB SSD" },
"priceOld": 999.99,
"discount": 20.0,
"query": "portatil",
"scraped_at": "2026-11-03T08:00:00Z",
"url": "https://www.pccomponentes.com/ultranote-x3-14-ryzen7-32gb-1tb-ssd",
"price": 799.99,
"currency": "EUR",
"originalPrice": 999.99,
"discountAmount": 200.00,
"discountPercent": 20.0,
"isOnSpecial": true,
"onlineAvailable": true,
"freeShipping": true,
"image": "https://thumb.pccomponentes.com/sample/ultranote.jpg",
"images": ["https://thumb.pccomponentes.com/sample/ultranote-1.jpg"],
"description": "Sample product description as shown on the site.",
"ean": "8410000000019",
"reference": "VNX3REF001",
"condition": "new",
"ratingRecommendPercent": 92,
"variants": [
{ "axis": "Memoria Ram", "name": "64 GB RAM", "url": "https://www.pccomponentes.com/ultranote-x3-64gb", "price": 899.99, "available": true }
],
"rating": 4.6,
"reviewCount": 342,
"reviews": {
"averageRating": 4.6,
"ratingCount": 342,
"totalReviewCount": 58,
"items": [
{ "rating": 5.0, "body": "Sample review text describing the product.", "author": "Sample Customer", "date": "2026-03-11" }
]
}
}

Plan Requirement

pccomponentes.com sits behind a managed bot challenge ("Just a moment..."). Apify datacenter connections are refused by it, and Spanish residential connections are served only intermittently, so a run can return fewer products than requested. A paid Apify plan is required: free plans do not include residential proxies, and this site needs them. The best results come from choosing a residential connection under Proxy & connection (or supplying your own proxy URLs); the default connection works on a best-effort basis only.

Each request is retried on a different connection, and the run falls back through a backup connection when the selected one is unavailable. The run log tells you what happened:

  • Warning (selected connection unavailable): "The selected connection is unavailable to this run. Apify free plans do not include residential proxies. Continuing on a backup connection; some pages may still be unavailable."
  • Warning (served on backup): "Served over the backup connection (the default connection was unavailable)."
  • Error (proxy refused for the account): "The proxy connection was refused for this account, so no page could be read. Your Apify plan does not include proxy access; a paid plan is required."
  • Error (residential unavailable, backup also failed): "No results: residential proxies are unavailable on this run (Apify free plans do not include them), and the backup connection could not load the requested PcComponentes pages."
  • Error (requests failed): "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search. Please try again later."

Whatever was collected before a sustained block is kept. Schedule a retry if a run ends with the connection errors above.

FAQ

How much does it cost?

You pay per product returned, plus a detail-enrichment charge, once per product and applied right after that product is saved to the dataset (so a stopped run only pays for rows already delivered), on any returned full product whose page was loaded for full detail and/or reviews (see Detail enrichment billing for the exact conditions), and a run-start fee. Because Fetch reviews is on by default, that enrichment charge applies to most returned products unless you turn Fetch reviews off. The Pricing tab shows the current rates. Use Max products total to cap the cost of any run.

This actor collects only publicly available product data. You are responsible for how you use it: follow pccomponentes.com's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product descriptions, images and reviews may be subject to third-party rights.

Why did I get charged for reviews on a product with no written reviews?

With Fetch reviews on, the enrichment charge fires once the product's page has loaded, whether or not that page actually had any written reviews to return; the record still carries an empty reviews list. A product whose page could not be loaded is not charged for enrichment. Turn off Fetch reviews (and leave Fetch full product detail off) if you only need the current price and card-level fields.

Can I track price drops on a schedule?

Yes, schedule the actor from the Schedules tab with the filters you want, for example Discounted items only. Turn on Incremental changes for scheduled runs to receive only new and price-changed products (see Incremental changes and resume above); with it off, each run returns the current matching products from scratch.

Why did my run finish with zero products instead of failing?

An empty dataset can mean nothing matched your filters, or the site refused the connection throughout the run. Check the run log for a "did not load" or "stopping retries" line to tell the two apart, then run it again in a few minutes if it was a connection problem.

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 e-commerce data?

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

πŸ”Œ Fnac Scraper
Scrape Fnac (fnac.com) products: current price plus strike-through discount, colour/model...
πŸ”Œ Boulanger.com
Scrape Boulanger (boulanger.com) electronics and home-appliance products: current price...
πŸ”Œ Darty Scraper
Scrape Darty (darty.com) products: current price plus strike-through reference price and...
πŸ›’ druni.es
Scrape Druni beauty, cosmetics and perfume products. Search by keyword, category, Ofertas...
πŸ›’ MediaMarkt.es Scraper
Scrape MediaMarkt Spain (mediamarkt.es) products: current price, strike-through original...
πŸ›’ dm.de
Scrape dm-drogerie markt (dm.de) products: current + strike-through Ausverkauf price with...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support

  • 🐞 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.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.