{
  "openapi": "3.0.1",
  "info": {
    "title": "Swapcard Event Scraper — Exhibitors, Speakers & Contacts",
    "description": "Scrape any public Swapcard event into structured data: every exhibitor with real company description, email, website, full address, product categories and booth, plus all speakers and sessions. Optional speaker enrichment adds bios, socials, job titles and custom fields.",
    "version": "0.11",
    "x-build-id": "SBU9nmg0R1ZHpDCpc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~swapcard-exhibitor-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-swapcard-exhibitor-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/scrapesage~swapcard-exhibitor-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-swapcard-exhibitor-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/scrapesage~swapcard-exhibitor-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-swapcard-exhibitor-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": {
          "startUrls": {
            "title": "Swapcard event URLs",
            "type": "array",
            "description": "Public Swapcard event links. The best link is the event's Exhibitors (or Partners/Sponsors) page, e.g. https://app.swapcard.com/event/<event-name>/exhibitors/<id>. Also accepted: the event's home link (all exhibitor lists are read), a single exhibitor's profile link (that exhibitor only), community sub-domains, /widget/ links and an organizer's own domain that serves the Swapcard event app. Events that need an attendee login cannot be read. Leave empty to run a small sample.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of event links (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Google Sheet/Drive share links are handled automatically."
          },
          "includeDetails": {
            "title": "Include full exhibitor profiles",
            "type": "boolean",
            "description": "Company description, email, website, social links, phone numbers, full address (street, city, state, postal code, country), product categories, track, all booths, documents and every custom profile field the organizer collects. Included in the exhibitor price. Turn off only for a name/booth/logo list.",
            "default": true
          },
          "includeContacts": {
            "title": "Include booth contact persons",
            "type": "boolean",
            "description": "Each exhibitor's booth team (name, job title, organization, photo, profile link, and website/LinkedIn when the person published them), nested in the exhibitor row and included free. Personal email addresses and phone numbers are never collected. Many events publish no booth teams; the list is then empty.",
            "default": true
          },
          "includeSpeakers": {
            "title": "Include speakers",
            "type": "boolean",
            "description": "Also export the event's speakers from its public agenda as extra rows (recordType \"speaker\"): name, organization, photo, profile link and the sessions they speak on. Each speaker row is billed as the Speaker event from 23 October 2026 (free until then). Off by default so a standard run is a clean exhibitor table.",
            "default": false
          },
          "includeSpeakerDetails": {
            "title": "Enrich speakers with full profiles (paid add-on)",
            "type": "boolean",
            "description": "Adds each speaker's job title, biography, website, social links (LinkedIn, X, Instagram, Facebook, YouTube), custom profile fields, detailed sessions (times, rooms, format) and the exhibitors they belong to. Turning this on also includes speakers. A speaker whose profile returns at least one of these fields is billed as Speaker enrichment instead of Speaker; a speaker with an empty profile is billed as a plain Speaker row. Personal contact details are never collected.",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of rows (exhibitors plus speakers) per run. With several event links the budget is shared fairly between them. Raise it to get every exhibitor of a large event.",
            "default": 3000
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy. The default (datacenter) is fast and works on Swapcard; the actor switches to a fresh IP on every retry and moves to residential automatically if datacenter IPs are refused.",
            "default": {
              "useApifyProxy": true
            }
          },
          "minRequestDelayMs": {
            "title": "Minimum request delay (ms)",
            "minimum": 0,
            "type": "integer",
            "description": "Politeness pause before each request to Swapcard, plus a random jitter of up to the same amount.",
            "default": 250
          },
          "maxConcurrency": {
            "title": "Events in parallel",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "How many event links are processed at the same time (1 to 4; higher values behave like 4).",
            "default": 4
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}