{
  "openapi": "3.0.1",
  "info": {
    "title": "Reviews Monitor: Shopify Review Apps & Amazon",
    "description": "New reviews, rating moves and complaint and praise themes for products on Shopify shops using Judge.me, Yotpo, Okendo, Loox or Stamped, for Amazon ASINs and for Trustpilot businesses. Changes-only watchlists, from $0.50 per 1,000 reviews; compact JSON for AI agents.",
    "version": "0.2",
    "x-build-id": "z4ZsvXj4MWhOseYdd"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/cleanpull~reviews-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-cleanpull-reviews-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/cleanpull~reviews-monitor/runs": {
      "post": {
        "operationId": "runs-sync-cleanpull-reviews-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/cleanpull~reviews-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-cleanpull-reviews-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": {
          "productUrls": {
            "title": "Product URLs",
            "type": "array",
            "description": "Product page addresses, one per line, from shops whose reviews come from Judge.me, Yotpo, Okendo, Loox or Stamped (most Shopify stores). The actor finds the review app on the page and reads its public review data. Amazon product URLs work here too.",
            "items": {
              "type": "string",
              "pattern": "\\.[A-Za-z]{2,}"
            }
          },
          "asins": {
            "title": "Amazon ASINs",
            "type": "array",
            "description": "Optional. Amazon ASINs (or product URLs), one per line. Each gives the star rating, ratings count, share per star and the top reviews the product page shows. Amazon's full review list needs a sign-in and is not read.",
            "items": {
              "type": "string",
              "pattern": "^\\s*[A-Za-z0-9]{10}\\s*$|[Hh][Tt][Tt][Pp][Ss]?:|[Aa][Mm][Aa][Zz][Oo][Nn]\\."
            }
          },
          "trustpilotDomains": {
            "title": "Trustpilot businesses",
            "type": "array",
            "description": "Optional. Businesses' domains (allbirds.com) or Trustpilot review pages (trustpilot.com/review/allbirds.com), one per line. Their Trustpilot reviews, newest first, with the company's rating, count and share per star. Read through CleanPull's marketplace data service: about 30 to 60 seconds per business, and each review read is a provider record.",
            "items": {
              "type": "string",
              "pattern": "\\.[A-Za-z]{2,}"
            }
          },
          "amazonMarketplace": {
            "title": "Amazon marketplace",
            "enum": [
              "US",
              "GB",
              "DE",
              "FR",
              "IT",
              "ES",
              "CA",
              "MX",
              "BR",
              "JP",
              "IN",
              "AU",
              "NL",
              "SE",
              "PL",
              "BE",
              "TR",
              "AE",
              "SA",
              "SG",
              "EG",
              "IE"
            ],
            "type": "string",
            "description": "The marketplace for plain ASINs (URLs keep their own). Outside the US, pages are read through addresses in that country (residential add-on).",
            "default": "US"
          },
          "sinceDays": {
            "title": "Reviews from the last (days)",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "Only reviews written in this many days. Reviews are read newest first and reading stops at the first older one.",
            "default": 30
          },
          "maxReviewsPerProduct": {
            "title": "Reviews per product",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "The most reviews returned per product. 0 returns the rating summary only (average, count, share per star).",
            "default": 20
          },
          "trustpilotWatchlistReviews": {
            "title": "Trustpilot reviews per business (changes only)",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "With Changes only, the most recent Trustpilot reviews read per business on each run (and never more than Reviews per product). New ones are returned; the others are re-checked and charged as provider records, so keep it small. Raise it for a business that gets more new reviews than this between runs.",
            "default": 5
          },
          "includeThemes": {
            "title": "Complaint and praise themes",
            "type": "boolean",
            "description": "Group the reviews read into themes such as \"sizing runs small\", \"arrived damaged\" or \"great quality\", with example review ids, on each product's summary row. Computed in the actor with keyword and phrase matching; no extra cost.",
            "default": true
          },
          "includeReviewerNames": {
            "title": "Reviewer names",
            "type": "boolean",
            "description": "Off by default: reviewer names are personal data. On: each review row also gets the display name the source itself shows publicly (often a first name and initial). Turn it on only if you have a lawful reason to process names.",
            "default": false
          },
          "changesOnly": {
            "title": "Changes only",
            "type": "boolean",
            "description": "Return only what changed since the last run with the same monitor name: new reviews, the rating moving, the review count jumping or dropping, a product removed. The first run is the baseline. Products with nothing new cost $0.50 per 1,000. Schedule it daily or weekly.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Runs with the same name compare against each other. Use one name per watchlist.",
            "default": "default"
          },
          "minRatingChange": {
            "title": "Smallest rating move (stars)",
            "minimum": 0,
            "maximum": 5,
            "type": "number",
            "description": "A rating move smaller than this is not reported (averages wobble by a hundredth as reviews come in). Amazon shows one decimal.",
            "default": 0.1
          },
          "countJumpPercent": {
            "title": "Review count jump (%)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Report the review count jumping (or dropping) when it moves by at least this percentage and at least 3 reviews since the last run. 0 reports any move.",
            "default": 10
          },
          "maxRunCostUsd": {
            "title": "Max cost per run (USD)",
            "minimum": 0.01,
            "maximum": 1000,
            "type": "number",
            "description": "Optional. Stop starting new products once a run's charges, plus the most the products in progress could still cost, would pass this. Use it for scheduled runs, which may have no spending limit of their own. Empty: only the run's spending limit applies."
          },
          "fields": {
            "title": "Only these fields",
            "type": "array",
            "description": "Optional. Keep only these fields, for example [\"productUrl\", \"rating\", \"text\", \"date\"]. recordType is always kept.",
            "items": {
              "type": "string"
            }
          },
          "maxConcurrency": {
            "title": "Products at a time",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "Products read in parallel. No site gets more than 2 requests at once.",
            "default": 4
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Optional. The actor picks proxies itself per site: direct, then datacenter, then residential only for sites that block the others."
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Optional. Accepted for compatibility with other actors: product URLs, same as Product URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}