{
  "openapi": "3.0.1",
  "info": {
    "title": "Four Corners Events Scraper",
    "description": "Collect events from Four Corners' What's on pages and receive structured records with titles, event types, dates, times, images, ticket links and descriptions. Use a type-filtered listing or a single event page, and optionally add past event pages listed in the sitemap.",
    "version": "0.1",
    "x-build-id": "X2DBuMK4PKIpXXGoL"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/axiomworks~four-corners-events-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-axiomworks-four-corners-events-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/axiomworks~four-corners-events-scraper/runs": {
      "post": {
        "operationId": "runs-sync-axiomworks-four-corners-events-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/axiomworks~four-corners-events-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-axiomworks-four-corners-events-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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Event listing URLs, event URLs or slugs",
            "type": "array",
            "description": "Four Corners targets as URL strings or {\"url\":\"...\"} objects, e.g. [{\"url\":\"https://www.fourcornersfilm.co.uk/whats-on\"}] for current events, [\"https://www.fourcornersfilm.co.uk/whats-on?type=film-screening\"] for screenings, or [\"heartfield-one-man-s-war\"] for one event. Bare host and trailing slash forms work. maxItems is shared across targets; duplicates appear once. Other hosts/paths, dead or blocked targets are skipped; if none work, the run succeeds with 0 rows."
          },
          "includePastEvents": {
            "title": "Add archive events after listing events",
            "type": "boolean",
            "description": "Set true, e.g. {\"includePastEvents\":true}, to add sitemap archive events after listing events. Default false returns only events linked by your targets, including historical event URLs supplied directly. Requires a real listing URL that loads; event-only or dead targets never trigger the archive. A listing ?type=film-screening also filters archive records to that type. Prefill true with maxItems 5 gives a small sample, not the full archive.",
            "default": false
          },
          "dateFrom": {
            "title": "Events overlapping from date",
            "type": "string",
            "description": "Keep events whose endDate is on or after this inclusive YYYY-MM-DD date. Default empty adds no lower bound. Uses London calendar dates; events with no parsed startDate are excluded when a date bound is set. Works on direct events, listings and archives.",
            "default": ""
          },
          "dateTo": {
            "title": "Events overlapping through date",
            "type": "string",
            "description": "Keep events whose startDate is on or before this inclusive YYYY-MM-DD date. Default empty adds no upper bound. Combine with dateFrom for overlapping events, including exhibitions starting before the window. Must be on or after dateFrom.",
            "default": ""
          },
          "keyword": {
            "title": "Title or description keyword",
            "type": "string",
            "description": "Keep events containing this literal phrase in title or description, ignoring case and normalizing Unicode. Default empty keeps all. Combined with date and listing type filters. Requires fetching event detail pages; a phrase with no matches returns 0 rows successfully.",
            "default": ""
          },
          "excludeIds": {
            "title": "Previously collected event IDs",
            "type": "array",
            "description": "Skip event IDs (URL slugs) already collected, e.g. [\"heartfield-one-man-s-war\"]. Default [] skips none. Known IDs are skipped before their detail request and do not consume maxItems or result charges. New matching events retain source order.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxItems": {
            "title": "Maximum events across all targets",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Limit the total saved events across all targets, e.g. {\"maxItems\":5}. Integer 1-10000, default 50; prefill 5. Stops at this limit or your run spending limit, whichever comes first. Returns fewer when targets contain fewer matching events. Listing and directly supplied events precede sitemap archive events; duplicate events count once.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Direct requests or Apify Proxy settings",
            "type": "object",
            "description": "Choose request routing, e.g. {\"proxyConfiguration\":{\"useApifyProxy\":false}} for direct requests (default). Use the proxy editor to enable Apify Proxy when the site blocks requests. Retryable HTTP errors and block pages use backoff and a fresh proxy session when configured. Targets still blocked after retries are skipped; an entirely blocked run succeeds with 0 rows and asks you to retry or change proxy settings.",
            "default": {
              "useApifyProxy": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}