{
  "openapi": "3.0.1",
  "info": {
    "title": "Phone Number Validator & Formatter",
    "description": "Validate, classify and format phone numbers in bulk from Apify datasets, CSV files and inline JSON. Offline validation (E.164, line type, country) — no scraping, no carrier APIs.",
    "version": "0.1",
    "x-build-id": "a0k1m8T5Hq1egLRgh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/jurassic_jove~phone-number-validator/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-jurassic_jove-phone-number-validator",
        "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/jurassic_jove~phone-number-validator/runs": {
      "post": {
        "operationId": "runs-sync-jurassic_jove-phone-number-validator",
        "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/jurassic_jove~phone-number-validator/run-sync": {
      "post": {
        "operationId": "run-sync-jurassic_jove-phone-number-validator",
        "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": {
          "datasetIds": {
            "title": "Apify dataset IDs",
            "type": "array",
            "description": "IDs of Apify datasets from previous scraper runs (e.g. Google Maps, Yelp-style listings). All items are fetched with pagination. Invalid IDs are skipped with a warning.",
            "items": {
              "type": "string"
            }
          },
          "csvUrls": {
            "title": "CSV file URLs",
            "type": "array",
            "description": "Public URLs to CSV files. The parser tolerates a BOM, comma/semicolon/tab/pipe delimiters and quoted fields. Malformed rows are skipped and counted, never crashing the run.",
            "items": {
              "type": "string"
            }
          },
          "inlineRecords": {
            "title": "Inline JSON records",
            "type": "array",
            "description": "Raw records pasted directly as a JSON array of objects. The example below shows the format and is used for the daily health-check — replace it with your own data or clear it."
          },
          "phoneFields": {
            "title": "Phone fields",
            "type": "array",
            "description": "Names of the record fields that contain phone numbers. Leave EMPTY to auto-detect common fields (phone, phoneNumber, phones, mobile, tel, telephone, contactPhone, whatsapp, ...). Array fields are processed element by element.",
            "items": {
              "type": "string"
            }
          },
          "defaultCountry": {
            "title": "Default country",
            "enum": [
              "US",
              "CA",
              "MX",
              "GT",
              "CR",
              "PA",
              "CO",
              "VE",
              "EC",
              "PE",
              "CL",
              "AR",
              "UY",
              "PY",
              "BO",
              "BR",
              "DO",
              "PR",
              "ES",
              "GB",
              "IE",
              "FR",
              "DE",
              "IT",
              "PT",
              "NL",
              "BE",
              "CH",
              "AT",
              "SE",
              "NO",
              "DK",
              "FI",
              "PL",
              "AU",
              "NZ",
              "IN",
              "JP",
              "ZA",
              "AE",
              "SA",
              "PH"
            ],
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code used to interpret numbers written WITHOUT an international prefix (e.g. a local '813...' number). Numbers that already start with '+' or '00' keep their own country.",
            "default": "US"
          },
          "countryHintField": {
            "title": "Country hint field (optional)",
            "type": "string",
            "description": "Name of a record field that holds a per-record country (ISO code, or an English/Spanish country name, or an address containing one). Used before falling back to the Default country. Example: countryCode, country, address."
          },
          "outputFormats": {
            "title": "Output formats",
            "type": "array",
            "description": "Which formatted versions of each number to include in the output.",
            "items": {
              "type": "string",
              "enum": [
                "e164",
                "international",
                "national"
              ],
              "enumTitles": [
                "E.164 (+14155552671)",
                "International (+1 415 555 2671)",
                "National ((415) 555-2671)"
              ]
            },
            "default": [
              "e164",
              "international",
              "national"
            ]
          },
          "dropInvalid": {
            "title": "Drop records with no usable phone",
            "type": "boolean",
            "description": "If ON, records whose phone numbers are all invalid (no valid or plausible number) are excluded from the output dataset. They are still counted in the summary. Records with no phone field are kept.",
            "default": false
          },
          "dedupeByPhone": {
            "title": "Deduplicate by phone number",
            "type": "boolean",
            "description": "If ON, records that share the same E.164 number are collapsed into one (the most complete record is kept, with a _duplicateCount). Note: enabling this holds results in memory until the run finishes.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}