{
  "openapi": "3.0.1",
  "info": {
    "title": "Bundesanzeiger Scraper — German Filings & Financials",
    "description": "Scrape bundesanzeiger.de, Germany's federal gazette: annual reports with parsed financials (revenue, equity, net income), insolvency notices, company announcements and capital-markets filings. Free built-in CAPTCHA solving, full publication text, multi-query runs.",
    "version": "0.0",
    "x-build-id": "JFCvx6XGgAR732RtY"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~bundesanzeiger-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-bundesanzeiger-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/memo23~bundesanzeiger-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-bundesanzeiger-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/memo23~bundesanzeiger-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-bundesanzeiger-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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "Search queries",
            "uniqueItems": true,
            "type": "array",
            "description": "One Bundesanzeiger search per entry — a company name (e.g. <code>SAP SE</code>), an HRB/HRA register number (e.g. <code>HRB 12345</code>), or any full-text keyword (e.g. <code>Berlin</code>).",
            "items": {
              "type": "string"
            }
          },
          "area": {
            "title": "Publication area",
            "enum": [
              "",
              "22",
              "5",
              "6",
              "7",
              "1",
              "2",
              "8"
            ],
            "type": "string",
            "description": "Restrict the search to one Bundesanzeiger publication area. Leave on 'All areas' to search everything.",
            "default": ""
          },
          "extractFinancials": {
            "title": "Extract structured financials",
            "type": "boolean",
            "description": "Parse annual-report text for revenue (Umsatzerlöse), total assets (Bilanzsumme), equity (Eigenkapital), net income (Jahresüberschuss/-fehlbetrag) and employee count. Best-effort — German reports vary wildly in formatting; fields that cannot be confidently found stay <code>null</code>.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Global cap on dataset rows across all queries. There is no artificial upper bound — large runs simply take longer.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Concurrent publication fetches per search session. The default is polite and reliable; raise it only for very large runs.",
            "default": 5
          },
          "proxy": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. Bundesanzeiger serves plain HTTP requests fine, so no proxy is needed for normal use — configure one only for very heavy volume.",
            "default": {
              "useApifyProxy": false
            }
          },
          "dateFrom": {
            "title": "Publication date from",
            "type": "string",
            "description": "Inclusive start of the publication-date window as ISO <code>YYYY-MM-DD</code> (e.g. <code>2025-01-01</code>). Applied on the gazette's own extended search, so you do not paginate through years of older filings. Leave empty for no lower bound."
          },
          "dateTo": {
            "title": "Publication date to",
            "type": "string",
            "description": "Inclusive end of the publication-date window as ISO <code>YYYY-MM-DD</code> (e.g. <code>2025-12-31</code>). Leave empty for no upper bound."
          },
          "latestPerEntity": {
            "title": "Latest publication per company only",
            "type": "boolean",
            "description": "Keep only the newest publication for each entity. Gazette results are newest-first, so the first hit per company is the latest. Combine with area <code>22</code> to get the latest Jahresabschluss per company rather than every historical filing.",
            "default": false
          },
          "monitoringMode": {
            "title": "Monitoring mode",
            "type": "boolean",
            "description": "Skip publications already returned on a previous run for this Apify user. Uses a named key-value store so a scheduled daily run only bills new notices — insolvency watch, portfolio refresh. Off by default.",
            "default": false
          },
          "onlyWithFinancials": {
            "title": "Only rows that actually contain figures",
            "type": "boolean",
            "description": "Skip publications with no extractable financials. A Bundesanzeiger search returns everything the gazette published, and much of it is not a financial report — <code>Bekanntmachung nach §§ 264 Abs. 3, 264b HGB</code> exemption notices are ~750 bytes and contain no figures by their nature. Since billing is per row, turn this on when you are after financials and do not want to pay for those stubs. Off by default: the full gazette feed, with <code>fullText</code> on every row, is what most runs want.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}