Fashion Nova Scraper at a glance
Fashion Nova Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes product id, product link, title, color and brand, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Web data
- Pricing
- $1.80 per 1,000 results (Free plan), from $1.00 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 22 options
Scrape Fashion Nova products by keyword, collection or URL. Extract product names, current and original prices, available sizes, size-level stock status, full image galleries and customer reviews.
What Fashion Nova Scraper can do
- Three ways in. Keyword search, collection walks, and pasted product, collection or search links - each becomes the same rich record.
- Full price picture. Current price, was-price, discount percent, sale flags and currency on every row, plus per-variant prices.
- Real stock signals. Per-size availability tables, not just an in-stock boolean, so monitoring actually means something.
- Reviews included. Star summary, per-star counts, fit signal and up to 20 customer reviews per product; each record with reviews bills one review unit.
- Built for schedules. Incremental mode returns only new and changed records on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Choose what to collect
These inputs let you configure Fashion Nova Scraper - Products, Prices, Sizes & Reviews. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | How to start the scrape. 'search' runs keyword searches and collection walks. 'url' processes the Fashion Nova URLs you paste: a product link returns that product in full (all its colors), a collection link is paged like a search, and a search link's own query decides the scope. |
searchTermsarray | One or more things to search Fashion Nova for, for example 'dresses', 'jeans', 'swimsuit'. Each term is walked independently. Search mode only: in URL mode the scope is read out of each pasted link instead. |
collectionsarray | Browse one or more store collections by handle, for example 'new' (New Arrivals), 'sale', 'jeans', 'dresses', 'womens-novadeals'. Each collection is walked independently. Search mode only. |
urlsarray | Paste Fashion Nova product or collection links; every link shape the store uses is accepted. Product links: /products/, with or without ?color=, locale prefixes and color-qualified handles are all recognized, and a product link returns all of that product's colorways. Collection links: /collections/, add &page=3 to start that walk further in. A /search?q= link is walked as a keyword search. Links to other pages (home, help, blog) are skipped. Multi-URL supported. Pagination starts at the page in the URL and walks forward. |
sortBystring | Ordering for keyword searches and collection walks, sent with every page. 'relevance' is the store default. Price sorts are verified live. Applies in BOTH search mode and URL mode (a sort= on a pasted link is not honored; this field decides). |
minPricenumber | Only keep rows whose price is at least this amount, in the storefront currency. Applied to the rows this run reads. Applies in BOTH search mode and URL mode; a pasted product link is the one exception and returns that product in full. |
maxPricenumber | Only keep rows whose price is at most this amount, in the storefront currency. Applied to the rows this run reads. Applies in BOTH search mode and URL mode; a pasted product link is the one exception and returns that product in full. |
Show 15 more inputs
| Input | What it controls |
|---|---|
onSaleOnlyboolean | Only keep products currently marked down: the current price is below the store's own was-price. Applied to the rows this run reads, in both modes. The current vs was price pair and the discount percent are on every row either way, so this is a convenience filter, not the only way to see sale items. |
availableOnlyboolean | Only keep products the store marks in stock. Every row also carries per-size stock, so partial sellouts are visible either way. |
fetchDetailsboolean | Read each product's customer reviews (star summary, per-star counts, fit signal and up to Max reviews below) from the store's reviews feed. Charged once per record. Leave off for a fast crawl: every catalog field (price, was-price, all sizes with stock, full image gallery, description, category, tags) is included either way. |
maxReviewsinteger | Cap on customer reviews carried per product when Fetch customer reviews is on. Set 0 to skip the reviews read entirely: no review pages and no star summary. Higher caps read more pages; the review unit is charged once per record that has reviews. |
maxItemsinteger | The single cap on this run: stop after collecting this many records across all search terms, collections and URLs. Set 0 for unlimited. |
maxPagesinteger | Safety bound on how many result pages to walk per search term or URL. Leave empty (0) for no page limit: the run then stops at Max items, not here. Does not impose a separate cap below Max items. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl without returning or charging for records already collected there. Use this after an interrupted or capped run. For recurring monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or weekly recurring monitoring of the same search, for example a price watch. The first run returns everything matching as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED records. Price moves, was-price changes and stock changes ARE reported as UPDATED: on a store they are the signal, not noise. The customer review list, its count and rating are excluded by default (a new review is not a product change). Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately per search, URL and filter setup; use State key to name or deliberately share a monitoring campaign. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search terms, URLs and filters, so two different searches never mix state. |
emitUnchangedboolean | Off by default. Turn on to also return records that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want a full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return records that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search: not when Max items capped it, not when Resume was used, and not when the run was refused. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Extra top-level field names to exclude from incremental change detection, on top of the built-in list (the review fields and the image gallery are already excluded by default; the first image stays tracked). Use when a field moves every run without the product changing. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API and Integrations, then select it here. Notion gets a page per record; other connectors get a best-effort write or digest. Each connector receives a condensed summary per record, not the full record; the complete record always stays in the dataset. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which record pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on records written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
productIdProduct ID (text)urlProduct link (link)titleTitle (text)colorColor (text)brandBrand (text)categoryCategory (text)currencyCurrency (text)pricePrice (number)compareAtPriceWas price (number)onSaleOn sale (boolean)discountPercentDiscount % (number)availableForSaleIn stock (boolean)Show 35 more fields
reviewCountReview count (number)reviewsRatingRating (number)imageUrlImage (image)changeTypeChange (text)scrapedAtScraped at (datetime)handleHandle (text)baseHandleBase handle (text)baseTitleBase title (text)descriptionDescription (text)seoTitleSEO title (text)seoDescriptionSEO description (text)optionsOptions (array)colorValuesColor values (array)sizeValuesSize values (array)variantCountVariant count (number)inStockVariantCountIn-stock variants (number)sizesAvailableSizes available (array)sizesUnavailableSizes unavailable (array)variantsVariants (array)imageUrlsImage gallery (array)imageCountImage count (number)tagsTags (array)maxPriceMax variant price (number)isGiftCardGift card (boolean)publishedAtPublished at (datetime)updatedAtUpdated at (datetime)sourceSource (text)searchQuerySearch query (text)collectionCollection (text)reviewsReview (array)reviewsFitFit signal (text)reviewsStarsStar counts (array)changedFieldsChanged fields (array)firstSeenAtFirst seen (datetime)lastSeenAtLast seen (datetime)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "6538671390844",
"title": "Sweetest Heart Embellished Midi Dress - Black",
"brand": "Fashion Nova",
"price": 54.99,
"currency": "USD",
"url": "https://www.fashionnova.com/products/sweetest-heart-embellished-midi-dress?color=black",
"availableForSale": true,
"color": "black",
"reviewCount": 526,
"category": "Dresses"
}Ways to use this data
- Who: price-monitoring teams - track Fashion Nova prices, markdowns and sell-outs across the catalog on a schedule.
- Who: fashion resellers and affiliates - pull titles, galleries, variants and availability into your own storefront or feed.
- Who: review researchers - collect star distributions and review text per product for sentiment and sizing analysis.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Fashion Nova Scraper return?
The documented output for Fashion Nova Scraper includes product id, product link, title, color, brand, category, currency and price. Availability of each field depends on the source page and the selected mode.
How much does Fashion Nova Scraper cost?
It costs $1.80 per 1,000 results on the Apify Free plan and from $1.00 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed items on a schedule?
Yes. Turn on Incremental mode and schedule the actor. The first run returns everything matching as NEW; later runs return only NEW and UPDATED records. Price moves, sell-outs and restocks all count as changes. Use State key to keep a monitoring campaign stable, and Emit unchanged or Emit expired only if you also want those rows (they return and bill extra rows).
Why did a run return fewer results than the site shows?
The run stops at Max items, which defaults to 20. Raise it, set it to 0, or narrow the filters to get a fuller slice.
Why did my run fail instead of returning an empty dataset?
A run that never got a single readable answer fails loudly with a connection message instead of reporting an empty catalog: an empty dataset always means the search genuinely matched nothing. A run that reads some pages but is refused others still succeeds and names the refused count with a Partial results status.
Can I use it with AI agents or MCP?
Yes. Every record is plain JSON over the dataset API, and the MCP connector export sends rows straight into tools like Notion. Point an agent at the dataset items endpoint with the input above.
