{
  "openapi": "3.0.1",
  "info": {
    "title": "The Knot Wedding Couple and Venue Scraper",
    "description": "Look up couples on The Knot by first and last name and gather their public wedding page. Every record returns both partners names, the wedding date, city and state, the venue name and address when set, and links to the wedding website and registry. Ideal for qualifying leads.",
    "version": "0.1",
    "x-build-id": "5CKqbjSpWvoJzeLJ2"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~theknot-couples-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-theknot-couples-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/parseforge~theknot-couples-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-theknot-couples-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/parseforge~theknot-couples-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-theknot-couples-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "discover"
            ],
            "type": "string",
            "description": "Search: look up couples by a known first + last name. Discover: collect couples in bulk without any name, by walking public couple IDs.",
            "default": "search"
          },
          "firstName": {
            "title": "First Name",
            "type": "string",
            "description": "Required in Search mode. First name of one partner (min 2 characters). Ignored in Discover mode."
          },
          "lastName": {
            "title": "Last Name",
            "type": "string",
            "description": "Required in Search mode. Last name of one partner (min 2 characters). Ignored in Discover mode."
          },
          "eventMonth": {
            "title": "Wedding Month (optional filter)",
            "enum": [
              "",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9",
              "10",
              "11",
              "12"
            ],
            "type": "string",
            "description": "Search mode only. Filter by wedding month. Requires Wedding Year to also be set.",
            "default": ""
          },
          "eventYear": {
            "title": "Wedding Year (optional filter)",
            "type": "string",
            "description": "Search mode only. Filter by wedding year (for example 2026). Pair with Wedding Month for best results.",
            "default": ""
          },
          "startCoupleId": {
            "title": "Start Couple ID (optional)",
            "minimum": 1,
            "type": "integer",
            "description": "Discover mode only. Walk public couple IDs downward from this number (newest weddings first). Leave blank to start near the live frontier each run (see Randomize start). The freshest, upcoming weddings sit roughly in the 71,000,000-79,000,000 band."
          },
          "randomizeStart": {
            "title": "Randomize start",
            "type": "boolean",
            "description": "Discover mode only. When on (default) and no Start Couple ID is given, each run begins at a random point in the populated band so repeated runs return different couples. Ignored if Start Couple ID is set.",
            "default": true
          },
          "usState": {
            "title": "US State filter",
            "type": "string",
            "description": "Discover mode only. Optional. Keep only couples in this US state. Accepts a 2-letter code (WA) or full name (Washington). Filtered cheaply from the couple's public URL before enrichment."
          },
          "weddingDateFrom": {
            "title": "Wedding date from",
            "type": "string",
            "description": "Discover mode only. Optional. Keep only weddings on or after this date (ISO, e.g. 2025-06-01). Month granularity."
          },
          "weddingDateTo": {
            "title": "Wedding date to",
            "type": "string",
            "description": "Discover mode only. Optional. Keep only weddings on or before this date (ISO, e.g. 2025-12-31). Month granularity."
          },
          "maxScan": {
            "title": "Max IDs to scan",
            "minimum": 1,
            "maximum": 5000000,
            "type": "integer",
            "description": "Discover mode only. Safety budget: the maximum number of couple IDs to probe per run. Prevents a narrow filter from scanning forever. Default 3000."
          },
          "includeVenue": {
            "title": "Include venue details",
            "type": "boolean",
            "description": "When enabled, fetches each couple's public wedding-website page to capture venue name, address, and ceremony/reception details. Adds one extra request per couple. Passcode-protected sites are skipped (venue left blank).",
            "default": true
          },
          "onlyComplete": {
            "title": "Only complete leads",
            "type": "boolean",
            "description": "When enabled, keeps only couples that have both partner names, a public wedding date, and a city or state. Skips sparse records instead of returning them with blank fields. Incomplete couples are counted in the log, not silently dropped.",
            "default": false
          },
          "maxItems": {
            "title": "Max Items",
            "minimum": 1,
            "maximum": 1000000,
            "type": "integer",
            "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}