{
  "openapi": "3.0.1",
  "info": {
    "title": "WLW Scraper & API: Supplier Emails, Phones & VAT IDs",
    "description": "Scrape wlw.de (Wer liefert was) without login: German, Austrian and Swiss B2B suppliers and manufacturers by keyword, search link or company link. Phone, website, address, headcount, VAT ID, contact persons, certificates and emails from company websites. Country, supplier type and size filters.",
    "version": "0.1",
    "x-build-id": "13RrWeqboMuzyae5u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/s_actors~wlw-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-s_actors-wlw-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/s_actors~wlw-scraper/runs": {
      "post": {
        "operationId": "runs-sync-s_actors-wlw-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/s_actors~wlw-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-s_actors-wlw-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": {
          "searchQueries": {
            "title": "Keywords",
            "type": "array",
            "description": "What the suppliers make or offer, like the wlw.de search box (German works best): \"Verpackung\", \"Edelstahlrohre\", \"Industrieventile\", \"Webdesign\". One search per keyword (filters below apply). wlw.de links work here too.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "wlw.de links",
            "type": "array",
            "description": "Search links (wlw.de/de/suche?q=...) use the keyword of the link with the filters of this form; company links (wlw.de/de/firma/<name>-<id>) give one row each.",
            "items": {
              "type": "string"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Two-letter codes of the supplier countries: DE, AT, CH mostly (also IT, ES, FR, PL...). Empty = all countries.",
            "items": {
              "type": "string"
            }
          },
          "supplierTypes": {
            "title": "Supplier types",
            "type": "array",
            "description": "Only these kinds of supplier (a company can have several). Empty = all.",
            "items": {
              "type": "string",
              "enum": [
                "Production",
                "CustomerSpecificManufacturing",
                "Distribution",
                "Service",
                "Wholesaler"
              ],
              "enumTitles": [
                "Manufacturer / producer",
                "Custom manufacturer",
                "Distributor",
                "Service provider",
                "Wholesaler"
              ]
            }
          },
          "employees": {
            "title": "Company size (employees)",
            "type": "array",
            "description": "Only companies with one of these headcount ranges. Companies without a headcount are left out when this is set (free).",
            "items": {
              "type": "string",
              "enum": [
                "1-4",
                "5-9",
                "10-19",
                "20-49",
                "50-99",
                "100-199",
                "200-499",
                "500-999",
                "1000+"
              ]
            }
          },
          "verifiedOnly": {
            "title": "Verified companies only",
            "type": "boolean",
            "description": "Only companies with the wlw.de \"verified\" badge.",
            "default": false
          },
          "maxCompaniesPerQuery": {
            "title": "Max companies per keyword",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "For each keyword and search link. wlw.de shows 3 300 companies per search: past that, the search is split by country and supplier type to reach more.",
            "default": 100
          },
          "maxCompanies": {
            "title": "Max companies in total",
            "minimum": 1,
            "type": "integer",
            "description": "The run stops at this many companies.",
            "default": 1000
          },
          "includeDetails": {
            "title": "Company page details",
            "type": "boolean",
            "description": "Read each company page: VAT ID, fax, contact persons (name, role, direct phone), certificates (ISO...), payment methods, incoterms, keywords, catalogs. Charged per company page read. wlw.de allows a calm pace only: with details ~20 companies a minute, without them several hundred a minute.",
            "default": true
          },
          "findEmails": {
            "title": "Find emails on company websites",
            "type": "boolean",
            "description": "wlw.de does not show email addresses: open the company website (and its contact or imprint page) to find them, plus LinkedIn, Facebook, Instagram, X and YouTube links. Charged only for companies with an email found.",
            "default": true
          },
          "checkEmailDomains": {
            "title": "Check email mail servers",
            "type": "boolean",
            "description": "Drop emails whose domain cannot receive mail (no MX record).",
            "default": true
          },
          "onlyWithEmail": {
            "title": "Only companies with an email",
            "type": "boolean",
            "description": "Output only companies with an email found (the others are free).",
            "default": false
          },
          "onlyNew": {
            "title": "Only new companies",
            "type": "boolean",
            "description": "Output only companies not seen in the previous runs of the same search (and monitor name). Schedule it weekly to get new suppliers of a keyword.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keeps the memory of seen companies apart for different schedules."
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Log every request retry.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}