Ajio Products Search Scraper
Pricing
from $4.99 / 1,000 results
Ajio Products Search Scraper
An advanced, high-speed e-commerce scraper designed for real-time price monitoring and competitor intelligence. Extracts product titles, current pricing, discounts, stock availability, specifications, images, and seller ratings from Ajio Products Search. Perfect for inventory tracking, drop-shipp...
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
Coding Frontned
Maintained by CommunityActor stats
0
Bookmarked
40
Total users
6
Monthly active users
a day ago
Last modified
Categories
Share
What does Ajio Products Search Scraper do?
This Actor extracts public product listing data from AJIO through the site's observed JSON search response. It supports keyword searches, an Ajio /search/ URL, and exact public product URLs; it does not log in, solve CAPTCHAs, or scrape private account data.
Why use Ajio Products Search Scraper?
- Collect normalized Ajio product IDs, names, brands, categories, prices, discounts, seller references, and product media.
- Continue through bounded API pages, filter by price and rating when the source exposes those values, deduplicate products, and sort the collected candidate set.
- Preserve the producing search/product URL and one-based source page on every normal row.
- Use Apify scheduling, the API, run history, monitoring, and dataset exports around the Actor.
Ajio may return an access challenge or a changed response shape. The Actor fails closed, records a bounded run summary, and optionally emits a minimal diagnostic row rather than fabricating products.
What data can it extract?
| Group | Fields |
|---|---|
| Identity | productId, name, productUrl, relativeUrl, brandName, brandTypeName |
| Pricing | currency, price, priceFormatted, mrp, mrpFormatted, offerPrice, discount, discountPercent |
| Classification | segment, category, subCategory, their source IDs, planningCategory, catalogName, colorGroup |
| Commercial | couponStatus, volumePricesFlag, sizeFlag, maxQuantity, sellerId, sellerSku |
| Media | mainImage, images, allImages, imageDetails, and outfitPictureURL when the source supplies product media |
| Provenance | sourceMode, searchTerm, sourceUrl, pageNumber, position, scrapedAt |
Optional values are omitted when AJIO does not return them. Product-listing responses do not reliably expose every detail-page field such as fit, sizes, or reviews, so those fields are not invented.
How to scrape AJIO
- Open the Actor's Input tab.
- Select
searchand enter a query, or selectsearchUrland provide an HTTPS AJIO/search/URL containingtextorq. - For individual items, select
productUrland provide one to twenty HTTPS AJIO/p/<product-code>URLs. - Set filters, limits, and developer options, then start the run.
- Download the dataset or inspect
OUTPUTin the default Key-Value Store.
Input
See the Input tab for the complete configuration. The runtime accepts these fields:
- Search Sources:
mode(defaultsearch),search,searchUrl, andproductUrls.searchQueryis a compatibility alias forsearch. - Filters and Sorting:
priceMinandpriceMax(INR, default0means no bound),ratings("","1 star & above","2 star & above","3 star & above", or"4 star & above"), andsortBy(relevance,discount-desc,price-asc,price-desc,newest, orrating). The legacy valuesprce-asc,prce-desc, andnewnremain accepted. - Pagination and Limits:
maxProductsPerSearch(default100, 1–500),maxPages(default10, 1–20), and aliasesmaxProducts/maxItems. The product URL mode has a limit of one matched row per requested URL. - Dataset Fields:
includeMedia(defaulttrue) andincludeDiagnostics(defaultfalse). Diagnostic rows contain onlyurl,error,errorCode, andscrapedAtand do not count toward normal item limits. - Developer Options:
requestTimeoutSecs(10–90, default45),maxRequestRetries(0–3, default2),requestDelayMs(0–5,000, default500), andproxyConfiguration.proxyis the legacy alias forproxyConfiguration; when both are supplied,proxyConfigurationwins. - Local QA / Fixtures:
fixtureFilefor one JSON file orfixtureFilesfor ordered per-page JSON files. Paths must be relative and remain inside the Actor directory; these are explicit local test inputs, never a silent fallback for live failures.
Custom searchUrl query parameters are retained in sourceUrl; the Actor uses the observed AJIO API query for the normalized search term. Pages are followed using AJIO's pagination.totalPages metadata, up to maxPages per source. For non-relevance sorts, the bounded candidate set is collected before selecting the global limit. Missing numeric values sort after products with values. Identical product IDs are removed globally.
Simple run
{"mode": "search","search": "men sports shoes","maxProductsPerSearch": 25,"maxPages": 1}
Filters and global sort
{"mode": "search","search": "running shoes","priceMin": 500,"priceMax": 5000,"ratings": "4 star & above","sortBy": "price-asc","maxProductsPerSearch": 10,"maxPages": 2}
Multiple product URLs
{"mode": "productUrl","productUrls": ["https://www.ajio.com/example-running-shoe/p/100000001_black","https://www.ajio.com/example-trail-shoe/p/100000003_green"],"includeMedia": false}
Developer and proxy options
{"mode": "searchUrl","searchUrl": "https://www.ajio.com/search/?text=shirts&queryId=example","maxPages": 2,"requestDelayMs": 1000,"maxRequestRetries": 1,"requestTimeoutSecs": 30,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "IN"}}
Fixture-backed local QA
{"mode": "search","search": "example shoes","sortBy": "price-asc","maxProductsPerSearch": 3,"maxPages": 2,"requestDelayMs": 0,"proxyConfiguration": {"useApifyProxy": false},"fixtureFile": "test/fixtures/api-pages.json","includeDiagnostics": true}
Output
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
A normal row is source-backed and contains the required identity, price, canonical URL, position, source mode, and timestamp fields:
{"productId": "000000000001","name": "Example Running Shoe","brandName": "Example Brand","currency": "INR","price": 1000,"priceFormatted": "Rs.1,000","mrp": 2000,"discount": "50% off","discountPercent": 50,"mainImage": "https://assets.ajio.com/example/running-shoe.jpg","images": ["https://assets.ajio.com/example/running-shoe.jpg"],"productUrl": "https://www.ajio.com/example-running-shoe/p/000000000001_black","relativeUrl": "/example-running-shoe/p/000000000001_black","sourceMode": "search","searchTerm": "example shoes","sourceUrl": "https://www.ajio.com/search/?text=example%20shoes","pageNumber": 1,"position": 1,"scrapedAt": "2026-01-01T00:00:00.000Z"}
When includeDiagnostics is enabled and a bounded request fails, the diagnostic shape is intentionally minimal:
{"url": "https://www.ajio.com/search/?text=example","error": "Ajio access challenge: HTTP 403.","errorCode": "ACCESS_BLOCKED","scrapedAt": "2026-01-01T00:00:00.000Z"}
OUTPUT is a Key-Value Store summary containing normal and diagnostic counts, page/request outcomes, filters, duplicate and incomplete-row counts, target statuses, and elapsed time. It is operational metadata and is not mixed into the dataset.
Tips and advanced options
Keep maxPages, maxProductsPerSearch, and detail-free media settings small for quick runs. Pagination and non-relevance sorting cost more requests because the Actor must collect the bounded candidate set before sorting. Retries, delays, and proxy routing can increase compute time. A residential proxy is used only when the configured Apify account can create it; the Actor does not bypass CAPTCHAs or access controls.
FAQ, support, and responsible use
If a run fails, inspect OUTPUT for ACCESS_BLOCKED, INVALID_RESPONSE, TIMEOUT, or REQUEST_FAILED, and include the run ID when opening an Issues-tab report. Local fixture mode is explicit and is never selected automatically after a live failure.
Use the Actor only for public data and at a respectful rate. Follow AJIO's terms, robots guidance, rate limits, applicable privacy law, and any restrictions on commercial use. This Actor is not affiliated with AJIO. It does not intentionally collect private user data; users remain responsible for lawful use of any public personal data that appears in source content.
Local validation
npm installnpm testnpm run lintnpm run validatenpm run checkapify validate-schemaapify run --purge --input-file ./qa-inputs/fixture-pagination.json