{
  "openapi": "3.0.1",
  "info": {
    "title": "SiteVerdict — UK Modern Slavery Statement Registry Search",
    "description": "Search the official UK Home Office Modern Slavery Statement Registry (open data, OGL) by company, sector or turnover, score statement completeness, check supplier lists for missing or outdated statements and monitor changes with alerts.",
    "version": "1.0",
    "x-build-id": "1aK4txWNmoKR4eapN"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/siteverdict~siteverdict-uk-modern-slavery-statements/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-siteverdict-siteverdict-uk-modern-slavery-statements",
        "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/siteverdict~siteverdict-uk-modern-slavery-statements/runs": {
      "post": {
        "operationId": "runs-sync-siteverdict-siteverdict-uk-modern-slavery-statements",
        "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/siteverdict~siteverdict-uk-modern-slavery-statements/run-sync": {
      "post": {
        "operationId": "run-sync-siteverdict-siteverdict-uk-modern-slavery-statements",
        "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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "supplier-check",
              "monitor"
            ],
            "type": "string",
            "description": "<b>search</b>: filter registry statements by organisation, sector, turnover, completeness. <b>supplier-check</b>: one row per supplier with FOUND_CURRENT / FOUND_OUTDATED / POSSIBLE_MATCH / NOT_FOUND. <b>monitor</b>: like supplier-check, but compares with the previous run and alerts on new or updated statements.",
            "default": "search"
          },
          "suppliers": {
            "title": "Suppliers (supplier-check / monitor)",
            "type": "array",
            "description": "Array of objects <code>{\"ref\": \"your id\", \"name\": \"Company name\", \"companyNumber\": \"01234567\"}</code>. Company number gives the most reliable match; name is matched ignoring case, punctuation and legal suffixes (Ltd, plc …), then by group parent, then fuzzily (flagged POSSIBLE_MATCH). Max 5,000."
          },
          "supplierLines": {
            "title": "Suppliers as text lines (optional)",
            "type": "array",
            "description": "Alternative to the JSON above, one per line: <code>Company name | company number | your ref</code> (number and ref optional).",
            "items": {
              "type": "string"
            }
          },
          "organisationNames": {
            "title": "Organisation name contains (search)",
            "type": "array",
            "description": "Case-insensitive; also matches the group parent name. Leave empty for all organisations.",
            "items": {
              "type": "string"
            }
          },
          "companyNumbers": {
            "title": "Company numbers (search)",
            "type": "array",
            "description": "Companies House numbers (zero padding is added automatically).",
            "items": {
              "type": "string"
            }
          },
          "sectors": {
            "title": "Sector contains (search)",
            "type": "array",
            "description": "Matches the registry's sector answers, e.g. <i>Retail</i>, <i>Construction</i>, <i>Textiles</i>, <i>Technology</i>, <i>Transport and logistics</i>.",
            "items": {
              "type": "string"
            }
          },
          "turnoverBands": {
            "title": "Turnover bands (search)",
            "type": "array",
            "description": "Registry turnover bands to include (empty = all).",
            "items": {
              "type": "string",
              "enum": [
                "Under £36 million",
                "£36 million to £60 million",
                "£60 million to £100 million",
                "£100 million to £500 million",
                "Over £500 million"
              ]
            }
          },
          "sectorType": {
            "title": "Sector type (search)",
            "enum": [
              "any",
              "Private",
              "Public"
            ],
            "type": "string",
            "description": "Private companies or public bodies.",
            "default": "any"
          },
          "groupSubmission": {
            "title": "Group submissions (search)",
            "enum": [
              "any",
              "yes",
              "no"
            ],
            "type": "string",
            "description": "Group statements cover several organisations (one row per organisation).",
            "default": "any"
          },
          "onlyMissingAreas": {
            "title": "Only statements missing one of the six areas",
            "type": "boolean",
            "description": "Keep only statements that say they do not cover at least one of the six recommended areas (structure, policies, risk assessment, due diligence, training, goals/KPIs).",
            "default": false
          },
          "minCompletenessScore": {
            "title": "Minimum completeness score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Our transparent 0–100 score of what was reported to the registry (see README)."
          },
          "maxCompletenessScore": {
            "title": "Maximum completeness score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Use e.g. 60 to find weak statements."
          },
          "updatedSince": {
            "title": "Updated since (YYYY-MM-DD)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2})?$",
            "type": "string",
            "description": "Only statements whose registry entry was updated on or after this date."
          },
          "latestPerOrganisation": {
            "title": "Latest statement per organisation only (search)",
            "type": "boolean",
            "description": "When several years are loaded, keep one row per organisation.",
            "default": false
          },
          "maxResults": {
            "title": "Max statements returned (search)",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Each returned statement is one billable event.",
            "default": 1000
          },
          "years": {
            "title": "Registry years to load",
            "type": "array",
            "description": "Statement years, e.g. <code>2024</code>, <code>2025</code>. Empty = the most recent N years offered by the registry (see next field).",
            "items": {
              "type": "string"
            }
          },
          "yearsToLoad": {
            "title": "How many recent years (when no years are given)",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "Default: 1 for search, 3 for supplier-check / monitor (so older statements are found and flagged as outdated)."
          },
          "fuzzyMatchThreshold": {
            "title": "Fuzzy name threshold (0.70–0.99)",
            "type": "string",
            "description": "Similarity needed for a POSSIBLE_MATCH when no exact name / number / parent match exists.",
            "default": "0.88"
          },
          "currentStatementYear": {
            "title": "Statement year counted as current",
            "minimum": 2020,
            "maximum": 2100,
            "type": "integer",
            "description": "Statements for this year or later are FOUND_CURRENT; older ones FOUND_OUTDATED. Default: last full year."
          },
          "includeDetail": {
            "title": "Include detailed answers (policies, training, audits, grievance mechanisms)",
            "type": "boolean",
            "description": "Turn off for smaller rows.",
            "default": true
          },
          "includePersonalData": {
            "title": "Include the approver's name (personal data)",
            "type": "boolean",
            "description": "The registry publishes the name and role of the person who approved each statement. Off by default (data minimisation, UK GDPR). Turn on only if you have a purpose for it.",
            "default": false
          },
          "stateStoreName": {
            "title": "Monitor state store name",
            "type": "string",
            "description": "Named key-value store that keeps the previous run (monitor mode). Use different names for different supplier lists.",
            "default": "siteverdict-modern-slavery-monitor"
          },
          "alertOnFirstRun": {
            "title": "Alert on the first (baseline) run",
            "type": "boolean",
            "description": "By default the first monitor run only records a baseline.",
            "default": false
          },
          "webhookUrl": {
            "title": "Webhook URL (monitor alerts)",
            "type": "string",
            "description": "HTTPS endpoint that receives a JSON summary of changes. Stored encrypted; never logged."
          },
          "slackWebhookUrl": {
            "title": "Slack incoming webhook URL",
            "type": "string",
            "description": "Slack message with the changed suppliers. Stored encrypted; never logged."
          },
          "generateReport": {
            "title": "Generate HTML report + CSV",
            "type": "boolean",
            "description": "Saves REPORT (HTML), STATEMENTS.csv / SUPPLIERS.csv and SUMMARY to the run's key-value store.",
            "default": true
          },
          "sampleMode": {
            "title": "Sample mode (bundled demo data, free)",
            "type": "boolean",
            "description": "Runs on a small synthetic fixture with the registry's real column layout. No network, no charges. Good for testing integrations.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}