{
  "openapi": "3.0.1",
  "info": {
    "title": "Albania QKB Scraper: Company Registry & Beneficial Owner Data",
    "description": "Look up Albanian companies in QKB, the national registry, by NIPT, name, or watchlist. Get legal details plus beneficial owner name, nationality, birth year/month, and ownership percent, fields the closest Slovakia UBO actor can't return. Built for KYC, AML, and due diligence. $3.50/1,000 companies.",
    "version": "0.1",
    "x-build-id": "n3UNxyWSy5wUEXYR9"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/getascraper~albania-qkb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-getascraper-albania-qkb-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~albania-qkb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-getascraper-albania-qkb-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~albania-qkb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-getascraper-albania-qkb-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": {
          "nipt": {
            "title": "NIPT (Registration Number)",
            "type": "string",
            "description": "Exact-match lookup by a subject's NIPT (the unique Albanian tax/registration number, e.g. M64525802A). This is the fastest and most precise way to look up a specific company, since QKB's own search treats NIPT as an exact key rather than a text search.",
            "default": ""
          },
          "companyName": {
            "title": "Company Legal Name",
            "type": "string",
            "description": "Contains-match search on the subject's registered legal name. Prefilled with a common example term so this Actor returns real results out of the box; replace it with the company you're actually looking for, or clear it and use NIPT / NIPT Watchlist / Filters instead.",
            "default": "Tirana"
          },
          "tradeName": {
            "title": "Trade Name",
            "type": "string",
            "description": "Contains-match search on the subject's registered trade name (brand name), which can differ from its legal name.",
            "default": ""
          },
          "niptList": {
            "title": "NIPT Watchlist (Batch Re-Check)",
            "type": "array",
            "description": "A list of known NIPTs to look up and re-check in a single run, one search plus detail fetch per NIPT. This is the recurring-use path: an EU/UK compliance team keeps a watchlist of Albanian counterparties and re-runs this Actor on a schedule (weekly or monthly) as part of ongoing KYC refresh, instead of re-typing each name one at a time. Combine with a saved schedule in Apify Console to automate periodic recheck.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "legalForm": {
            "title": "Legal Form",
            "enum": [
              "",
              "Person Fizik",
              "Shoqeri me pergjegjesi te kufizuar",
              "Shoqeri aksionare",
              "Dege e Shoqerise se huaj",
              "Shoqeri Kolektive",
              "Shoqeri e Thjeshte",
              "Shoqeri Komandite",
              "Shoqeri Kursim Krediti",
              "Shoqeri Bashkeveprim Reciprok",
              "Shoqeri e Bashkepunimit Bujqesor",
              "Shoqeri Aksionare me Oferte Publike",
              "Zyre Perfaqesimi"
            ],
            "type": "string",
            "description": "Restrict results to a specific legal form (company type), matching QKB's own \"Formë ligjore\" filter.",
            "default": ""
          },
          "ownershipType": {
            "title": "Ownership Type",
            "enum": [
              "",
              "Shqiptare (100%)",
              "E huaj (100%)",
              "E perbashket (shqiptare-e huaj)",
              "Shteterore Shqiptare"
            ],
            "type": "string",
            "description": "Restrict results by the nationality mix of ownership, matching QKB's own \"Pronësia\" filter.",
            "default": ""
          },
          "region": {
            "title": "Region (Qark)",
            "enum": [
              "",
              "berat",
              "diber",
              "durres",
              "elbasan",
              "fier",
              "gjirokaster",
              "korce",
              "kukes",
              "lezhe",
              "shkoder",
              "tirane",
              "vlore"
            ],
            "type": "string",
            "description": "Restrict results to one of Albania's 12 prefectures (qarqe), matching QKB's own \"Qarku\" filter.",
            "default": ""
          },
          "city": {
            "title": "City / Municipality",
            "type": "string",
            "description": "Restrict results to a specific municipality (e.g. \"tirane\", \"durres\", \"kuçove\"). QKB's own form only shows municipalities that belong to the Region selected above; this field accepts free text, so make sure the city you enter actually belongs to that region, or leave Region blank to search by city alone.",
            "default": ""
          },
          "registeredFrom": {
            "title": "Registered From",
            "type": "string",
            "description": "Only include subjects registered on or after this date.",
            "default": ""
          },
          "registeredTo": {
            "title": "Registered To",
            "type": "string",
            "description": "Only include subjects registered on or before this date.",
            "default": ""
          },
          "administrator": {
            "title": "Administrator Name",
            "type": "string",
            "description": "Contains-match search on the name of a listed administrator.",
            "default": ""
          },
          "shareholder": {
            "title": "Shareholder / Partner Name",
            "type": "string",
            "description": "Contains-match search on the name of a listed shareholder or partner (ortak/aksioner).",
            "default": ""
          },
          "sector": {
            "title": "Business Sector / Activity",
            "type": "string",
            "description": "Contains-match search on the subject's declared business activity description.",
            "default": ""
          },
          "address": {
            "title": "Address",
            "type": "string",
            "description": "Contains-match search on the subject's registered address.",
            "default": ""
          },
          "fetchBeneficialOwners": {
            "title": "Fetch Beneficial Owners (UBO)",
            "type": "boolean",
            "description": "For each matched subject, fetch and structurally parse QKB's anonymous beneficial-ownership (UBO) PDF extract: full name, nationality, year and month of birth, ownership percentage, control type, and the date each person was designated a beneficial owner. This data became anonymously public under Albania's May-2025 transparency reform and is the core reason this Actor exists: the closest comparable Apify actor (Slovakia's RPVS Beneficial Owners Scraper) cannot return date of birth, nationality, or ownership percentage at all, because Slovakia's own register redacts those three fields. Adds one extra request per matched subject.",
            "default": true
          },
          "fetchSimpleExtract": {
            "title": "Fetch Simple Extract (PDF)",
            "type": "boolean",
            "description": "For each matched subject, fetch QKB's official \"Ekstrakt i Thjeshtë\" (Simple Extract) PDF and store it in this run's key-value store, with a link added to that subject's dataset row. Adds one extra request per matched subject.",
            "default": false
          },
          "fetchHistoricalExtract": {
            "title": "Fetch Historical Extract (PDF)",
            "type": "boolean",
            "description": "For each matched subject, fetch QKB's official \"Ekstrakt Historik\" (Historical Extract) PDF, showing the subject's full filing history, and store it in this run's key-value store, with a link added to that subject's dataset row. Adds one extra request per matched subject.",
            "default": false
          },
          "maxItems": {
            "title": "Max Subjects",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Maximum number of matched subjects to process (search plus any enabled detail fetches) in this run. QKB's own search endpoint returns at most 50 results per query with no pagination, so raising this above 50 has no effect; narrow your search with the Filters above instead of raising this value.",
            "default": 15
          },
          "proxyConfiguration": {
            "title": "Proxy Configuration",
            "type": "object",
            "description": "QKB's servers show no IP-quality gating (confirmed live), so the datacenter default below is the cheapest correct choice. Residential proxy is not required for this target.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}