{
  "openapi": "3.0.1",
  "info": {
    "title": "Embedded Page Data Extractor - JSON-LD, __NEXT_DATA__ & Nuxt",
    "description": "For AI agents and scrapers: every JSON a page ships in its HTML (__NEXT_DATA__, Next.js RSC, Nuxt, Apollo, __INITIAL_STATE__, JSON-LD, microdata), with IDs, numeric prices and stock the page never shows, a map of paths, or only the values at paths you name. Monitor mode returns only changes.",
    "version": "0.1",
    "x-build-id": "uPtMfrSgSeWGPtglW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~embedded-page-data-extractor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-embedded-page-data-extractor",
        "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~embedded-page-data-extractor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-embedded-page-data-extractor",
        "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~embedded-page-data-extractor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-embedded-page-data-extractor",
        "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": {
          "urls": {
            "title": "Page URLs",
            "type": "array",
            "description": "Pages to read, one per line (1 to 1,000 per run). A URL without http:// or https:// is read as https://. The same URL given twice is read and charged once. If this is empty, the example page https://www.bbc.com/news is used.",
            "items": {
              "type": "string"
            }
          },
          "paths": {
            "title": "Paths to extract (optional)",
            "type": "array",
            "description": "Dot-paths of values to return in the values column, one per line (up to 50), for example props.pageProps.listing.price or json-ld:offers.price. Start a path with a kind and a colon (next-data:, json-ld:, nuxt:, apollo:, initial-state:, microdata:, ...) or with blockN: to pick the block; without it the first block where the path exists is used. Use [0] or .0 for array items, [*] for every item, and [\"key.with.dots\"] for unusual keys. Paths that are not found are listed in missingPaths. In monitor mode, only these paths are compared.",
            "items": {
              "type": "string"
            }
          },
          "kinds": {
            "title": "Kinds of embedded data (optional)",
            "type": "array",
            "description": "Only look for these kinds, one per line. Kinds: next-data, next-flight, nuxt, apollo, initial-state, json-ld, microdata, script-json, script-variable, data-attribute. Empty means every kind except data-attribute.",
            "items": {
              "type": "string"
            }
          },
          "includeDataAttributes": {
            "title": "Also read JSON in data-* attributes",
            "type": "boolean",
            "description": "Also return JSON written in data-* attributes (for example data-props=\"{...}\"). Off by default because on most sites these are analytics tags. The Inertia.js data-page attribute on #app is always read as initial-state.",
            "default": false
          },
          "includeData": {
            "title": "Include the JSON of each block",
            "type": "boolean",
            "description": "Return the full JSON of each block in blocks[].data. Turn off to get only the block list, the value map and the values at your paths (much smaller rows).",
            "default": true
          },
          "maxDataBytes": {
            "title": "Maximum JSON per page (bytes)",
            "minimum": 0,
            "maximum": 5000000,
            "type": "integer",
            "description": "Upper limit for the JSON returned in blocks[].data for one page (0 to 5,000,000). Blocks that do not fit are returned without data and marked dataOmitted with the reason; the value map and the values at your paths are still built from them.",
            "default": 1000000
          },
          "valueMapLimit": {
            "title": "Value map entries",
            "minimum": 0,
            "maximum": 5000,
            "type": "integer",
            "description": "How many paths to list in valueMap (0 to 5,000), shallowest first. Each entry has the block, kind, path (arrays shown as [*]), value type, how many values share the path and an example value. 0 turns the map off.",
            "default": 150
          },
          "onlyChanges": {
            "title": "Monitor mode: only pages whose data changed",
            "type": "boolean",
            "description": "Return only pages where a watched value changed since the last run with the same watch name (plus pages new to the watch). The first run returns every page as the starting point. With paths, only those paths are compared; without paths, every value in the embedded data is compared except keys that change on every load (token, nonce, csrf, session, requestId, traceId, correlationId, buildId, timestamp and similar). Small arrays are compared regardless of order. A change is re-read after 1.5 seconds and reported only if the second read shows the same new value; values that differ between two reads are ignored for that page from then on. Without paths, a path that appears or disappears is reported only when two runs in a row see it. A run in which nothing changed returns a free row saying so and charges only the run start fee.",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Name of the remembered state used to compare runs (letters, digits, dot, dash, underscore; up to 40). Setting it (or turning on monitor mode) fills changeType and changes. Use a different name for each list of pages you track on its own schedule. With monitor mode on and no name, the name \"default\" is used."
          },
          "ignorePaths": {
            "title": "Paths to ignore when comparing (optional)",
            "type": "array",
            "description": "Paths (as shown in valueMap, without the kind) that monitor mode should not compare, one per line, for example props.pageProps.recommendations. A path also ignores everything under it.",
            "items": {
              "type": "string"
            }
          },
          "resetMonitoringState": {
            "title": "Forget what this watch remembered",
            "type": "boolean",
            "description": "Start this watch over: forget the remembered values before this run, so every page is returned as a first check.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Pages read at the same time",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many pages are read in parallel (1 to 8).",
            "default": 4
          },
          "requestTimeoutSecs": {
            "title": "Time limit per request (seconds)",
            "minimum": 5,
            "maximum": 60,
            "type": "integer",
            "description": "How long to wait for one page to answer (5 to 60 seconds). HTTP 429, 500, 502, 503 and 504 are asked again up to two more times; a page that does not answer in time is asked once more.",
            "default": 20
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}