{
  "openapi": "3.0.1",
  "info": {
    "title": "Impressum & Imprint Scraper – Company Data, VAT Number & ID",
    "description": "Website domains – or a trade and a city, e.g. dentists in Graz – in, one company record per site out from the imprint (Impressum, legal notice): company name, managing directors (opt-in), address, register number, VAT number (VAT ID) checked in EU VIES, email, phone. Germany, Austria, Switzerland.",
    "version": "0.1",
    "x-build-id": "zIPb1M3gccb5l8Vt2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/perceptr0n~imprint-impressum-website-contact-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-perceptr0n-imprint-impressum-website-contact-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/perceptr0n~imprint-impressum-website-contact-scraper/runs": {
      "post": {
        "operationId": "runs-sync-perceptr0n-imprint-impressum-website-contact-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/perceptr0n~imprint-impressum-website-contact-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-perceptr0n-imprint-impressum-website-contact-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": {
          "search": {
            "title": "Search: a trade and a place",
            "type": "string",
            "description": "Provide either `search` or `websites`. Type a trade and a place instead of pasting domains — e.g. `Zahnärzte in Hamburg`, `dentists in Hamburg`, `Steuerberater München`, `roofers Cologne`. The businesses are looked up in OpenStreetMap (© OpenStreetMap contributors, ODbL) and every website found is then enriched from its imprint; `max_companies` caps how many. About 180 trades are recognised in German and English. When set, `websites` is ignored."
          },
          "max_companies": {
            "title": "Maximum companies found by search",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "Only applies to `search` (1–500, default 25). Each company found is fetched and enriched, so this is also the cost lever: 25 companies cost about $0.14 on the Apify free plan, including the $0.01 start fee.",
            "default": 25
          },
          "websites": {
            "title": "Websites",
            "type": "array",
            "description": "Provide either `websites` or `search`. Domains or URLs — e.g. `liebherr.com`, `https://www.sap.com`, `tuwien.at`, `sbb.ch`. Paste the whole list; one row comes back per distinct website (duplicates are merged, entries that are not a website are listed in the run report instead of being charged). Germany, Austria and Switzerland are all covered. Ignored when `search` is set.",
            "items": {
              "type": "string"
            },
            "default": [
              "liebherr.com",
              "frischpack.de",
              "tuwien.at"
            ]
          },
          "validate_vat": {
            "title": "Verify the VAT ID against the official EU register (VIES)",
            "type": "boolean",
            "description": "ON by default. Every VAT ID found is checked against the EU's VIES service: `vatStatus` is `valid` or `invalid` only when VIES said so, `unavailable` (`vatValid: null`) when VIES or a member state's register is down — after three tries and a second pass at the end of the run; an outage is never reported as invalid. Swiss UIDs are outside the EU system (`not_checked`). Austria, Italy, Spain and most other member states also return the registered name and address; Germany discloses validity only.",
            "default": true
          },
          "requester_vat_id": {
            "title": "Your own EU VAT ID (optional, for a VIES consultation number)",
            "type": "string",
            "description": "Optional. If you enter your own EU VAT ID (e.g. `DE123456789`), it is sent to VIES as the requester, and VIES returns a consultation number for every check (`vatRequestIdentifier`) that documents that and when you checked. Per the VIES API documentation the number is only issued with requester data. If VIES rejects your ID, the checks still run, without the number. Leave empty to check without identifying yourself."
          },
          "allow_contact_page": {
            "title": "Fall back to the contact page when no legal notice exists",
            "type": "boolean",
            "description": "ON by default. If a site publishes no imprint, the contact page is read instead and the row is marked `foundVia: contact page` with `impressumFound: false` — you still get the address and the mail box, and you can see exactly where the data came from.",
            "default": true
          },
          "web_fetch": {
            "title": "Read sites we cannot read ourselves through Apify's Web Fetch",
            "type": "boolean",
            "description": "ON by default. Sites this Actor cannot read with a plain request — they refuse automated requests, do not answer or draw their pages with JavaScript — are searched once more through Apify's own Web Fetch actor. It runs on your Apify account and Apify bills it there: $0.0015 per delivered page plus $0.00005 per call start on the free plan (Apify Store, 13 October 2026), at most 6 pages and about $0.01 per such site, nothing for sites read directly. Rows read this way say `foundVia: Apify Web Fetch` (or `Apify Web Fetch (browser)`). It reads the start page (German version first), the legal-notice links and a contact page; pages drawn by JavaScript are rendered in a browser there. In a test list of 39 large DACH websites 8 turned automated requests away (12 October 2026); on the Apify platform 8 of 9 such sites came back complete with a VIES-valid VAT ID (13 October 2026).",
            "default": true
          },
          "include_person_names": {
            "title": "Include managing directors and other person names",
            "type": "boolean",
            "description": "OFF by default. Person names in a legal notice are personal data under GDPR — switch this on only if you have a lawful basis for processing them. Company data, address, register and VAT number are returned either way.",
            "default": false
          },
          "max_items": {
            "title": "Maximum websites",
            "minimum": 1,
            "type": "integer",
            "description": "Optional cap on the website list (at least 1), e.g. `500`. Leave empty to process the whole list."
          },
          "osm_filter": {
            "title": "OpenStreetMap tag filter (advanced)",
            "type": "string",
            "description": "For trades the search does not know. Pass a raw OSM tag filter such as `[\"amenity\"=\"dentist\"]` or `[\"office\"=\"company\"]` together with `location` below. See taginfo.openstreetmap.org for the vocabulary."
          },
          "location": {
            "title": "Location for the tag filter (advanced)",
            "type": "string",
            "description": "City, district, county or state — e.g. `Hamburg`, `Landkreis Rosenheim`, `Bayern`. Needed only with the tag filter above."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}