{
  "openapi": "3.0.1",
  "info": {
    "title": "AJIO Scraper: Fashion Search, Prices, Reviews",
    "description": "Scrape AJIO searches with AJIO's own filters, search links or product links, no login. Get price, MRP, offer price, discount, rating, colour group, category and seller id, plus written reviews and price monitors. Sizes with stock per size are a best effort add-on AJIO can refuse for hours.",
    "version": "0.1",
    "x-build-id": "Ic9wZN6ReW9MgXDHM"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automation_craft~ajio-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automation_craft-ajio-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/automation_craft~ajio-scraper/runs": {
      "post": {
        "operationId": "runs-sync-automation_craft-ajio-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/automation_craft~ajio-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-automation_craft-ajio-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "searchTerms": {
            "title": "Search words",
            "type": "array",
            "description": "Words to search on AJIO, one search per entry (linen shirt, kurta set, running shoes). Narrow a search with the filters below, the Category filter included (jeans with Men - Jeans). AJIO answers some words with one of its own brand, category or curated pages (netplay goes to the NETPLAY page); that page is then read through a door AJIO's bot manager can refuse for hours, and the coverage row says so. Each search delivers up to Max products per search.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "AJIO links",
            "type": "array",
            "description": "Links copied from ajio.com: a search page (https://www.ajio.com/search/?text=linen%20shirt), with the filters and order AJIO put in the link, or a product page (https://www.ajio.com/dnmx-women-typographic-print-relaxed-fit-crew-neck-t-shirt/p/443107169_purple, luxe.ajio.com product pages too). Category, brand and curated list pages are not read (AJIO refuses them for hours): use search words with the Category or Brands filter. Display and tracking parts such as gridColumns and utm_source are ignored. Through the API, give each link as a text (an object {\"url\": \"...\"} is read too).",
            "items": {
              "type": "string"
            }
          },
          "productCodes": {
            "title": "Product codes",
            "type": "array",
            "description": "AJIO product codes: the code after /p/ in a product link (443107169_purple: the product number and its colour) or a size code (443107169001). One product record is read for each; a code AJIO does not have gets a free status row.",
            "items": {
              "type": "string"
            }
          },
          "brands": {
            "title": "Brands",
            "type": "array",
            "description": "Brands as AJIO lists them in its brand filter (NETPLAY, DNMX, LOUIS PHILIPPE): a filter on your searches (several brands match any of them). With no search words, each brand's name is searched with the brand filter. Product links and codes are read as given. A brand AJIO does not list for a search is noted on its coverage row; when it lists none of them, that search delivers nothing and is free.",
            "items": {
              "type": "string"
            }
          },
          "gender": {
            "title": "Gender",
            "type": "array",
            "description": "Only these values of AJIO's Gender filter (Men, Women, Boys, Girls, Infants). Several values match any of them.",
            "items": {
              "type": "string"
            }
          },
          "categoryNames": {
            "title": "Category filter",
            "type": "array",
            "description": "Only these values of AJIO's Category filter on a search, written as AJIO shows them (Men - Jeans, Women - Kurtas). A value the search does not list is noted on its coverage row. A filtered search is not a whole category page: AJIO's search finds the products its words match.",
            "items": {
              "type": "string"
            }
          },
          "colors": {
            "title": "Colours",
            "type": "array",
            "description": "Only these values of AJIO's Colors filter (Blue, Black, Beige).",
            "items": {
              "type": "string"
            }
          },
          "sizes": {
            "title": "Sizes",
            "type": "array",
            "description": "Only these values of AJIO's Size & Fit filter (M, L, 32, UK 8).",
            "items": {
              "type": "string"
            }
          },
          "highlights": {
            "title": "Highlights",
            "type": "array",
            "description": "Only these values of AJIO's Highlights filter (BESTSELLER, NEW, NEWSEASON, SELLINGFAST, BESTPRICE). AJIO lists some in two spellings (BESTSELLER and Bestseller): a value written exactly is taken alone; a value AJIO lists only in another case is matched case aside.",
            "items": {
              "type": "string"
            }
          },
          "filters": {
            "title": "Other AJIO filters",
            "type": "array",
            "description": "Any other filter of AJIO's filter panel, one per entry as \"<filter name>: <value>\" (Occasion: Casual, Fit: Slim Fit, Pattern: Solid, Sleeve: Full Sleeves, Vibes: 100% Cotton). The same filter name twice matches either value. Names and values are matched against the page's own panel; a filter with no listed value makes that page deliver nothing, free.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (INR)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only products priced at or above this many rupees (AJIO's price bands that overlap the range are sent, and the price is checked on every row)."
          },
          "maxPrice": {
            "title": "Maximum price (INR)",
            "minimum": 0,
            "maximum": 10000000,
            "type": "integer",
            "description": "Only products priced at or below this many rupees (AJIO's price bands that overlap the range are sent, and the price is checked on every row)."
          },
          "minDiscount": {
            "title": "Minimum discount",
            "enum": [
              "10",
              "20",
              "30",
              "40",
              "50",
              "60",
              "70",
              "80",
              "90"
            ],
            "type": "string",
            "description": "Only products discounted by at least this percent, one of AJIO's own steps (AJIO's discount filter, and checked on every row)."
          },
          "minRating": {
            "title": "Minimum rating",
            "enum": [
              "1",
              "2",
              "3",
              "4"
            ],
            "type": "string",
            "description": "Only products rated at least this many stars (AJIO's rating filter, and checked on every row)."
          },
          "onlyOnSale": {
            "title": "Only products on sale",
            "type": "boolean",
            "description": "Only products whose price is below their MRP, in searches and search links (product links and codes are read as given). Products not reduced are read but not delivered and not charged.",
            "default": false
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "relevance",
              "discount",
              "price_low_to_high",
              "price_high_to_low",
              "newest",
              "rating"
            ],
            "type": "string",
            "description": "AJIO's order for every search: relevance (AJIO's default), discount, price low to high, price high to low, newest (What's New) or rating. AJIO offers no popularity order."
          },
          "maxItemsPerSearch": {
            "title": "Max products per search",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "The most products one search or search link delivers (1 to 20,000). Default 100 when the field is left out; the form fills in 10 for a quick first run."
          },
          "maxItems": {
            "title": "Max products in all",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "The most products the whole run delivers (inputs are read in order). Leave empty for no total cap."
          },
          "startPage": {
            "title": "Start page",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "Start each search at this page of AJIO's results (1 to 2,000); the pages before it are not read."
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "The most result pages one search reads (1 to 2,000). Leave empty to stop only at Max products per search."
          },
          "pageSize": {
            "title": "Page size",
            "minimum": 1,
            "maximum": 99,
            "type": "integer",
            "description": "Products asked per result page (1 to 99). Leave empty for the most a page gives; it also sets what one Start page step skips."
          },
          "includeDetails": {
            "title": "Product details (sizes and stock)",
            "type": "boolean",
            "description": "Best effort: add each product's record (the Product detail event): every size with its stock status, stock count and price, the other colours, the star breakdown, fit and quality ratings, fabric, care and other attributes, manufacturer, importer and country of origin, HSN code, return terms, coupons, bank offers and the delivery note. The row then shows the record's own price, stock and rating. AJIO's bot manager can refuse product records for hours: a record that could not be read is free and the row says why; a run of product links or codes at such an hour pays only the start fee and what it delivered.",
            "default": false
          },
          "includeReviews": {
            "title": "Reviews",
            "type": "boolean",
            "description": "Add each product's written reviews as rows of their own (the Review event): rating, text, reviewer name, verified buyer flag, photos, helpful count and date.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 2000,
            "type": "integer",
            "description": "The most reviews delivered per product (1 to 2,000). Default 20."
          },
          "reviewsSort": {
            "title": "Review order",
            "enum": [
              "newest",
              "most_helpful"
            ],
            "type": "string",
            "description": "AJIO's review orders: newest (default) or most helpful."
          },
          "reviewsRating": {
            "title": "Review stars",
            "enum": [
              "all",
              "1",
              "2",
              "3",
              "4",
              "5"
            ],
            "type": "string",
            "description": "all (default), or only reviews with this many stars."
          },
          "reviewsWithPhotosOnly": {
            "title": "Only reviews with photos",
            "type": "boolean",
            "description": "Only reviews that carry the buyer's photos.",
            "default": false
          },
          "includeImages": {
            "title": "Image gallery",
            "type": "boolean",
            "description": "On (default): every row carries the product's image gallery (model photos and the outfit picture). Off: only the main image.",
            "default": true
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "A name for a memory this Actor keeps between runs (one per name, per Actor). With it, a scheduled run delivers and charges only products and reviews it has not delivered before (mode new_only), watches product links and codes for price and stock changes (mode changes), or delivers every product it finds on every run with its price history (mode history)."
          },
          "monitorMode": {
            "title": "Monitor mode",
            "enum": [
              "new_only",
              "changes",
              "history"
            ],
            "type": "string",
            "description": "new_only (default): only products and reviews not delivered before under this name. changes: every product link or code is read each run and delivered as one Product check row with its price, MRP and stock status, the previous values and what changed since the last run (with Product details on, the row also carries every size's price, stock status and stock count). history: every product your searches, search links and product codes find is delivered on every run with its price history under this name: when it was first tracked, every price, MRP and stock change with its date, the previous price and the change, and the lowest and highest price with their dates (the Price history event), plus one HTML price report with a chart of each product's price (the PRICE-REPORT record of the run's key-value store)."
          },
          "resetMonitor": {
            "title": "Reset the monitor",
            "type": "boolean",
            "description": "Forget what the monitor delivered before and start again from this run.",
            "default": false
          },
          "maxRequestRetries": {
            "title": "Retries per request",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How often a call AJIO did not answer is asked again (1 to 5, default 3). A refused door is replaced at once and does not count."
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long one call to AJIO may take before it is asked again (5 to 60, default 20). A door whose calls run into it or answer slower than 10 seconds twice in a row is replaced."
          },
          "maxConcurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 3,
            "type": "integer",
            "description": "How many products are read at once (1 to 3, default 3)."
          },
          "requestDelaySecs": {
            "title": "Delay between requests (seconds)",
            "minimum": 0,
            "maximum": 10,
            "type": "integer",
            "description": "The least time between two requests of one kind (searches and reviews, product records, the pages AJIO answers some searches with), 0 to 10. Default 0: the Actor's own pace (about two requests a second, up to Parallel requests at once). With a delay, requests of a kind go one at a time."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Default: searches and reviews from the run's own address (Apify datacenter sessions if AJIO refuses it); product records, and the pages AJIO answers some searches with, through Apify datacenter sessions outside the US, product records then through Apify residential sessions in India when AJIO refuses them. Turn the Apify proxy off to use the run's own address only, or give your own proxy links."
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}