{
  "openapi": "3.0.1",
  "info": {
    "title": "AliExpress Scraper & Price Monitor - Prices, Discounts, Sold",
    "description": "AliExpress search results by keyword: price, original price, discount, rating, units sold, ship-from and delivery. Flags new-shopper prices and checks the currency. Monitor mode returns only new products and price drops. No login. Export as JSON, CSV or Excel. Unofficial.",
    "version": "0.1",
    "x-build-id": "ASaJQ0KN2amMeScV0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~aliexpress-search-price-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-aliexpress-search-price-monitor",
        "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/neverempty~aliexpress-search-price-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-aliexpress-search-price-monitor",
        "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/neverempty~aliexpress-search-price-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-aliexpress-search-price-monitor",
        "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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What you would type into the AliExpress search box, for example phone case, usb c cable, anker 737 power bank. Other languages work too (AliExpress translates them). Leave Search terms and Search URLs both empty to run the example search phone case.",
            "items": {
              "type": "string"
            }
          },
          "searchUrls": {
            "title": "Search URLs",
            "type": "array",
            "description": "Optional. AliExpress search pages copied from your browser, for example https://www.aliexpress.com/w/wholesale-phone-case.html?SortType=total_tranpro_desc. The search words and the sort order are used; other filters in the URL are not (the run log says which were ignored).",
            "items": {
              "type": "string"
            }
          },
          "sort": {
            "title": "Sort order",
            "enum": [
              "best-match",
              "orders",
              "price-asc",
              "price-desc"
            ],
            "type": "string",
            "description": "Sort order for every search (overrides the order in a pasted URL). Empty = Best match for a normal run and Orders in monitor mode. Best match reshuffles about half of the page on every request, so Orders is the steadier list to watch."
          },
          "currency": {
            "title": "Currency",
            "enum": [
              "USD",
              "EUR",
              "GBP",
              "CAD",
              "AUD",
              "BRL",
              "MXN",
              "PLN",
              "JPY",
              "KRW",
              "CHF",
              "SEK",
              "NZD",
              "TRY",
              "ILS",
              "SAR",
              "AED",
              "CLP",
              "UAH",
              "KZT"
            ],
            "type": "string",
            "description": "Currency AliExpress shows the prices in (its own currency setting). Every price is checked: if AliExpress answers in another currency, that search returns a free row saying so instead of mislabelled prices. Empty = USD.",
            "default": "USD"
          },
          "shipToCountry": {
            "title": "Ship to (country code)",
            "type": "string",
            "description": "Two-letter country code AliExpress uses for prices, delivery dates and availability, for example US, DE, GB, FR. Empty = US.",
            "default": "US"
          },
          "maxResultsPerSearch": {
            "title": "Max products per search",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Most products returned for one search (AliExpress shows 60 per page). Empty = 60. In monitor mode it limits the products returned per search in one run; the rest come in the next run."
          },
          "maxPages": {
            "title": "Pages per search",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many results pages (60 products each) to read for each search, 1 to 5. Empty = just enough pages for Max products per search. In monitor mode every run reads this many pages and compares them."
          },
          "includeSponsored": {
            "title": "Include sponsored products",
            "type": "boolean",
            "description": "On (default): return AliExpress's advertised placements too, marked sponsored true. Off: leave them out.",
            "default": true
          },
          "onlyMatchingTitles": {
            "title": "Only products whose title contains every search word",
            "type": "boolean",
            "description": "On: leave out products whose title does not contain every search word (AliExpress also shows loosely related products). Off (default): return them all, each marked titleMatchesSearch true or false.",
            "default": false
          },
          "onlyPricedProducts": {
            "title": "Only products with a price",
            "type": "boolean",
            "description": "On (default): leave out products that AliExpress shows without a price (the \"free with any purchase\" gifts for new shoppers), so every product row has a price. In a normal search the Actor reads up to two more results pages to fill your list with priced products. In monitor mode it reads the same pages every run and does not fill the gap, so products moving between pages are not reported as new. Off: return them too, with price empty and charged false (not charged).",
            "default": true
          },
          "onlyNew": {
            "title": "Monitor mode: only new products and price drops",
            "type": "boolean",
            "description": "On: every run reads the same pages of each search and returns only products that appear in these results for the first time (changeType new-in-results) and products whose price changed as set in Price change alerts (changeType price-change, with previousPrice). The first run returns up to Max products per search (changeType first-check) and remembers them as the starting point. Each run that reads the list is charged the run start fee; runs where nothing changed return a free row saying so."
          },
          "priceChangeAlerts": {
            "title": "Monitor mode: price change alerts",
            "enum": [
              "drops",
              "any",
              "off"
            ],
            "type": "string",
            "description": "Which price changes monitor mode returns. New-shopper prices (the welcome prices AliExpress shows to visitors who are not logged in) change from one request to the next, so they are never compared; see priceChangeBasis in the output. Empty = price drops only.",
            "default": "drops"
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Keeps separate memories for monitor mode, for example one per client (letters, digits, dot, dash, underscore; up to 40). Runs with the same watch name, search, currency and country share what has already been returned."
          },
          "resetMonitoringState": {
            "title": "Start the watch again",
            "type": "boolean",
            "description": "On: forget what this watch has seen for these searches before running, so this run is a first check again. Off or empty: keep the memory."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}