{
  "openapi": "3.0.1",
  "info": {
    "title": "Shopify Judge.me Reviews Scraper API",
    "description": "Scrape Judge.me reviews from Shopify product URLs or scan store sitemaps for product ratings and review counts.",
    "version": "0.0",
    "x-build-id": "h2pWsgFWH2DqXSCaK"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lurkapi~shopify-judge-me-reviews-scraper-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lurkapi-shopify-judge-me-reviews-scraper-api",
        "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/lurkapi~shopify-judge-me-reviews-scraper-api/runs": {
      "post": {
        "operationId": "runs-sync-lurkapi-shopify-judge-me-reviews-scraper-api",
        "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/lurkapi~shopify-judge-me-reviews-scraper-api/run-sync": {
      "post": {
        "operationId": "run-sync-lurkapi-shopify-judge-me-reviews-scraper-api",
        "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",
        "required": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Store or product URLs",
            "maxItems": 1000,
            "type": "array",
            "description": "Paste a Shopify store URL to get one summary row per public product (including products with zero reviews). Paste a specific product URL to get every Judge.me review on that exact product. Both types can be mixed in the same run.",
            "items": {
              "type": "string",
              "maxLength": 2048
            }
          },
          "maxResultsPerUrl": {
            "title": "Maximum results per URL",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Cap on rows returned for each input URL. A store URL returns up to this many product summaries; a product URL returns up to this many individual reviews.",
            "default": 50
          },
          "filterRatings": {
            "title": "Star ratings",
            "uniqueItems": true,
            "type": "array",
            "description": "Only keep reviews with the star ratings you pick. Leave empty to include every rating. Free with the base row price.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1 star",
                "2 stars",
                "3 stars",
                "4 stars",
                "5 stars"
              ]
            }
          },
          "sortBy": {
            "title": "Sort reviews by",
            "enum": [
              "most_recent",
              "highest_rating",
              "lowest_rating",
              "most_helpful",
              "pictures_first",
              "videos_first",
              "oldest"
            ],
            "type": "string",
            "description": "Judge.me's built-in orders (most recent, highest rating, lowest rating, most helpful, pictures first, videos first) are free. Oldest first is a custom sort computed by the Actor and counts as an add-on.",
            "default": "most_recent"
          },
          "filterKeyword": {
            "title": "Search review text ($)",
            "maxLength": 500,
            "type": "string",
            "description": "Only keep reviews whose title or body contains this phrase. Charged only on matching rows that are delivered."
          },
          "verifiedOnly": {
            "title": "Only verified buyers ($)",
            "type": "boolean",
            "description": "Only keep reviews Judge.me marks as verified purchases.",
            "default": false
          },
          "onlyWithMedia": {
            "title": "Only reviews with media ($)",
            "type": "boolean",
            "description": "Only keep reviews that include at least one photo or video.",
            "default": false
          },
          "onlyWithPhotos": {
            "title": "Only reviews with photos ($)",
            "type": "boolean",
            "description": "Only keep reviews that include at least one customer photo.",
            "default": false
          },
          "onlyWithVideos": {
            "title": "Only reviews with videos ($)",
            "type": "boolean",
            "description": "Only keep reviews that include at least one customer video.",
            "default": false
          },
          "merchantReplyOnly": {
            "title": "Only reviews with store replies ($)",
            "type": "boolean",
            "description": "Only keep reviews the store has publicly replied to.",
            "default": false
          },
          "filterStartDate": {
            "title": "Published on or after ($)",
            "type": "string",
            "description": "Only keep reviews posted on or after this date (YYYY-MM-DD, inclusive)."
          },
          "filterEndDate": {
            "title": "Published on or before ($)",
            "type": "string",
            "description": "Only keep reviews posted on or before this date (YYYY-MM-DD, inclusive)."
          },
          "reviewContent": {
            "title": "Written vs. rating-only ($)",
            "enum": [
              "all",
              "with_text",
              "rating_only"
            ],
            "type": "string",
            "description": "Keep every review, only reviews that have written text, or only star-ratings without text.",
            "default": "all"
          },
          "filterLanguages": {
            "title": "Review languages ($)",
            "maxItems": 50,
            "type": "array",
            "description": "Only keep reviews written in these languages. Use short codes like en, es, de, ja, or the 3-letter ISO 639-3 form such as eng, spa, deu, jpn.",
            "items": {
              "type": "string"
            }
          },
          "detectLanguage": {
            "title": "Detect review language ($)",
            "type": "boolean",
            "description": "Add a detectedLanguage field on every review, worked out from the review text. Charged only when a language is detected successfully.",
            "default": false
          },
          "translateReviews": {
            "title": "Translate reviews ($)",
            "type": "boolean",
            "description": "Translate the review title and body into your chosen target language. When Judge.me already provides its own translation for a review, that one is used for free. Same-language reviews (source equals target) are skipped so you are not billed for no-op translations.",
            "default": false
          },
          "translationTarget": {
            "title": "Translate into",
            "maxLength": 16,
            "type": "string",
            "description": "Target language for translations. Use a short code such as en, es, fr, de, ja, or pt-BR.",
            "default": "en"
          },
          "downloadMedia": {
            "title": "Archive review media ($)",
            "type": "boolean",
            "description": "Save up to 10 verified photos or direct video files per review (3 MB per file cap) to the run's key-value store. Original source URLs stay in the row either way. Charged per file successfully stored. Embedded YouTube and Vimeo players are not downloadable, so their public URLs stay in videoUrls without a charge.",
            "default": false
          },
          "outputStoreDomain": {
            "title": "Store domain",
            "type": "boolean",
            "description": "Normalized store host, for example bravelittleones.com.",
            "default": true
          },
          "outputStoreUrl": {
            "title": "Store URL",
            "type": "boolean",
            "description": "Full canonical URL of the store's home page.",
            "default": true
          },
          "outputProductHandle": {
            "title": "Product handle",
            "type": "boolean",
            "description": "The URL slug Shopify uses in product paths.",
            "default": true
          },
          "outputProductTitle": {
            "title": "Product title",
            "type": "boolean",
            "description": "Public product name.",
            "default": true
          },
          "outputProductUrl": {
            "title": "Product URL",
            "type": "boolean",
            "description": "Canonical link to the product page.",
            "default": true
          },
          "outputProductImageUrl": {
            "title": "Product image",
            "type": "boolean",
            "description": "URL of the primary product image.",
            "default": true
          },
          "outputProductDescription": {
            "title": "Product description",
            "type": "boolean",
            "description": "Plain-text product description (product-summary rows only).",
            "default": true
          },
          "outputPrice": {
            "title": "Product price",
            "type": "boolean",
            "description": "Public price shown on the storefront.",
            "default": true
          },
          "outputCurrency": {
            "title": "Currency",
            "type": "boolean",
            "description": "Storefront currency code, when it can be detected.",
            "default": true
          },
          "outputAvailable": {
            "title": "Availability",
            "type": "boolean",
            "description": "Whether the product is publicly for sale.",
            "default": true
          },
          "outputAverageRating": {
            "title": "Average rating",
            "type": "boolean",
            "description": "Judge.me's product-level average rating.",
            "default": true
          },
          "outputReviewCount": {
            "title": "Review count",
            "type": "boolean",
            "description": "Total number of Judge.me reviews on the product.",
            "default": true
          },
          "outputRatingHistogram": {
            "title": "Rating histogram",
            "type": "boolean",
            "description": "Review counts broken down by star rating.",
            "default": true
          },
          "outputJudgeMeDetected": {
            "title": "Judge.me detected flag",
            "type": "boolean",
            "description": "Whether the Actor confirmed the product uses the Judge.me widget.",
            "default": true
          },
          "outputReviewerName": {
            "title": "Reviewer name",
            "type": "boolean",
            "description": "Public display name Judge.me shows for the reviewer.",
            "default": true
          },
          "outputPublishedAt": {
            "title": "Review date",
            "type": "boolean",
            "description": "Timestamp when the review was posted.",
            "default": true
          },
          "outputVerifiedBuyer": {
            "title": "Verified buyer flag",
            "type": "boolean",
            "description": "Judge.me's verified-purchase flag on each review.",
            "default": true
          },
          "outputReply": {
            "title": "Merchant reply",
            "type": "boolean",
            "description": "Public reply the store posted to the review, as plain text.",
            "default": true
          },
          "outputMediaUrls": {
            "title": "Media URLs",
            "type": "boolean",
            "description": "Source URLs for customer photos and videos on each review.",
            "default": true
          },
          "outputJudgeMeDetails": {
            "title": "Judge.me details",
            "type": "boolean",
            "description": "Extras from Judge.me: anonymous flag, reviewer location and country code, review source, helpful and not-helpful vote counts, and custom question answers.",
            "default": true
          },
          "outputInputUrl": {
            "title": "Input URL",
            "type": "boolean",
            "description": "The URL from your input that produced this row. Useful for grouping results.",
            "default": true
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}