{
  "openapi": "3.0.1",
  "info": {
    "title": "Handytarife Vergleich Scraper: German mobile plans, price drops",
    "description": "Scrape German Handytarife (mobile phone plans) from the Verivox comparison: Telekom, Vodafone, O2 and 1&1 networks. Filter by GB, Mbit/s, price and brand. Get average monthly price, 24-month cost, cashback and porting bonus per tariff, plus a price-drop and new-tariff monitor. No login.",
    "version": "0.1",
    "x-build-id": "JZ7Turx7iB97bdYlB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~verivox-mobile-tariffs-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-verivox-mobile-tariffs-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/getascraper~verivox-mobile-tariffs-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-verivox-mobile-tariffs-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/getascraper~verivox-mobile-tariffs-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-verivox-mobile-tariffs-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": {
          "networks": {
            "title": "Mobile networks",
            "type": "array",
            "description": "Only tariffs that run on these networks. Leave empty for all four. 1&1 and O2 resellers (for example freenet, klarmobil, Lebara) are listed under the network they use.",
            "items": {
              "type": "string",
              "enum": [
                "telekom",
                "vodafone",
                "o2",
                "1und1"
              ],
              "enumTitles": [
                "Telekom",
                "Vodafone",
                "Telefónica (O2)",
                "1&1"
              ]
            },
            "default": []
          },
          "minDataGb": {
            "title": "Minimum data volume (GB)",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Keep tariffs with at least this many GB per month. Tariffs with unlimited data always pass. Leave empty for no limit.",
            "default": 10
          },
          "unlimitedDataOnly": {
            "title": "Unlimited data only",
            "type": "boolean",
            "description": "Keep only tariffs that Verivox lists with unlimited data volume.",
            "default": false
          },
          "minDownloadMbit": {
            "title": "Minimum download speed (Mbit/s)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Keep tariffs whose maximum download speed is at least this value, for example 100 or 300."
          },
          "requireEsim": {
            "title": "eSIM available",
            "type": "boolean",
            "description": "Keep only tariffs that Verivox marks as available with eSIM.",
            "default": false
          },
          "requireEuRoaming": {
            "title": "EU roaming flat rate included",
            "type": "boolean",
            "description": "Keep only tariffs with an EU roaming flat rate for calls, SMS and data.",
            "default": false
          },
          "maxAveragePrice": {
            "title": "Maximum average monthly price (EUR)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Verivox's average monthly price already includes one-time costs and discounts spread over the first 24 months. Tariffs above this value are dropped."
          },
          "maxMonthlyFee": {
            "title": "Maximum monthly fee (EUR)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Upper limit for the monthly fee in the first 24 months after discounts."
          },
          "maxOneTimeCosts": {
            "title": "Maximum one-time costs (EUR)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Upper limit for the one-time total (setup fee and SIM card minus discounts) over the contract term."
          },
          "minCashback": {
            "title": "Minimum cashback (EUR)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep tariffs that carry at least this much cashback in their price calculation, for example 60."
          },
          "contractLength": {
            "title": "Contract length",
            "enum": [
              "any",
              "flexible",
              "long"
            ],
            "type": "string",
            "description": "Any, flexible tariffs with a one-month term, or long tariffs with a 24-month term.",
            "default": "any"
          },
          "flexibleStartOnly": {
            "title": "Flexible contract start only",
            "type": "boolean",
            "description": "Keep only tariffs where you can choose the contract start date yourself.",
            "default": false
          },
          "includeYouthTariffs": {
            "title": "Include youth tariffs",
            "type": "boolean",
            "description": "Also list tariffs meant for young people, which Verivox hides by default.",
            "default": false
          },
          "keepNumber": {
            "title": "Price with number porting",
            "type": "boolean",
            "description": "Calculate prices as if you bring your current phone number. Some tariffs add a porting bonus that lowers the average price.",
            "default": true
          },
          "brands": {
            "title": "Only these brands",
            "type": "array",
            "description": "Keep tariffs whose brand or provider name contains one of these words, for example freenet or klarmobil. Leave empty for all brands.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "excludeBrands": {
            "title": "Exclude brands",
            "type": "array",
            "description": "Drop tariffs whose brand or provider name contains one of these words.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "searchText": {
            "title": "Search text",
            "type": "string",
            "description": "Every word must appear in the tariff name, brand, provider or listed benefits, for example 'Allnet 50 GB'."
          },
          "excludeHighRejection": {
            "title": "Skip high porting rejection providers",
            "type": "boolean",
            "description": "Drop tariffs that Verivox flags with a high rate of rejected number-porting requests.",
            "default": false
          },
          "maxTariffsPerBrand": {
            "title": "Maximum tariffs per brand",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only the best tariffs of each brand in the current sort order, so one provider cannot fill the whole list."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "averageMonthlyPrice",
              "monthlyFee",
              "totalCost24Months",
              "pricePerGb",
              "dataVolume",
              "downloadSpeed",
              "cashback",
              "brand"
            ],
            "type": "string",
            "description": "Order of the result list. Price sorts use Verivox's average monthly price, which includes one-time costs and discounts.",
            "default": "averageMonthlyPrice"
          },
          "sortDirection": {
            "title": "Sort direction",
            "enum": [
              "auto",
              "asc",
              "desc"
            ],
            "type": "string",
            "description": "Automatic uses cheapest first for prices and highest first for data, speed and cashback.",
            "default": "auto"
          },
          "maxItems": {
            "title": "Maximum tariffs",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of tariffs to save. Verivox lists around 135 mobile tariffs in total.",
            "default": 20
          },
          "includeCostLines": {
            "title": "Include cost breakdown lines",
            "type": "boolean",
            "description": "Add the full list of monthly and one-time cost and discount lines to every tariff, as shown in Verivox's price details.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Give this saved search a name to track it over time. Every run is compared with the previous run under the same name and marks tariffs as new, price drop, price rise, updated or removed. Use a fixed name and schedule the Actor. Leave empty for a one-off run."
          },
          "onlyChanges": {
            "title": "Only output changes",
            "type": "boolean",
            "description": "When a monitor name is set, save only new, changed and removed tariffs and skip unchanged ones.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. By default the Actor connects directly and falls back to Apify proxies by itself if a request is refused. Set a proxy only to force a specific route."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}