{
  "openapi": "3.0.1",
  "info": {
    "title": "Email, Phone and IP Risk API - Digital Footprint Lookup",
    "description": "Check the digital footprint behind an email address, phone number or IP: which of 290 plus online platforms it is registered on, a fraud risk score, breach history, domain and DNS records, carrier, line type and SIM swap signals, and proxy, VPN and Tor detection. Pay per result.",
    "version": "0.1",
    "x-build-id": "QBiyfBfrGxx08g4ch"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~email-phone-ip-risk-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-email-phone-ip-risk-api",
        "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/nabeelbaghoor~email-phone-ip-risk-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-email-phone-ip-risk-api",
        "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/nabeelbaghoor~email-phone-ip-risk-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-email-phone-ip-risk-api",
        "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": "What to look up",
            "enum": [
              "email-risk",
              "phone-risk",
              "ip-risk"
            ],
            "type": "string",
            "description": "Which of the three services to call. Each one takes a different kind of input, so a run looks up one kind of value at a time: email addresses, phone numbers, or IP addresses. Anything in the list that cannot be the kind this mode expects is refused before it is sent, since the provider charges per request either way.",
            "default": "email-risk"
          },
          "queries": {
            "title": "Values to look up",
            "type": "array",
            "description": "The email addresses, phone numbers or IP addresses to look up, one per line, matching the service chosen above. Phone numbers should include the country code; spaces, plus signs, brackets and dashes are all fine and are stripped before sending. Duplicates are looked up once.",
            "items": {
              "type": "string"
            }
          },
          "region": {
            "title": "Account region",
            "enum": [
              "eu",
              "us",
              "me",
              "apac"
            ],
            "type": "string",
            "description": "Which regional deployment your account lives on. This matters more than it looks: the regions are separate installations and a key issued in one is refused by every other one with the same message a wrong key gets. If every lookup comes back saying the key is invalid and you are sure it is not, this is the setting to change.",
            "default": "eu"
          },
          "ipInclude": {
            "title": "Extra IP blocks to request",
            "type": "array",
            "description": "Extra sections the IP service will attach when asked for them by name. History adds what the provider has seen this address do before, flags adds the rule hits behind the score, and id returns the lookup identifier. Has no effect on the email and phone services.",
            "items": {
              "type": "string",
              "enum": [
                "history",
                "flags",
                "id"
              ],
              "enumTitles": [
                "History: what this address has been seen doing before",
                "Flags: the rule hits behind the score",
                "ID: the provider's lookup identifier"
              ]
            },
            "default": []
          },
          "flagsTimeframeDays": {
            "title": "Flag history window in days",
            "minimum": 1,
            "maximum": 3650,
            "type": "integer",
            "description": "How far back the IP service should look when returning flags. Only used when flags are requested above. Leave empty for the provider's own default window."
          },
          "providerConfig": {
            "title": "Provider settings",
            "type": "object",
            "description": "A JSON object of provider settings, merged into the request exactly as written. The provider's configuration keys differ per service and are not published as a fixed list, so nothing is guessed at here: whatever you write is sent as given. Use this to switch a module on or off, or to set a timeout, without waiting for a named field. Leave empty for the provider's defaults."
          },
          "minRiskScore": {
            "title": "Minimum risk score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep rows scoring at or above this. Use it to turn a run into a review queue containing only what is actually suspicious. Leave at zero to keep every score.",
            "default": 0
          },
          "maxRiskScore": {
            "title": "Maximum risk score",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Only keep rows scoring at or below this. The mirror of the minimum, and the one to use when you are building a clean list rather than a review queue. Leave at zero to keep every score.",
            "default": 0
          },
          "requireDeliverable": {
            "title": "Keep only deliverable addresses",
            "type": "boolean",
            "description": "In the email service, drop addresses the provider did not mark deliverable. Has no effect on the other two services.",
            "default": false
          },
          "excludeDisposable": {
            "title": "Drop disposable addresses and numbers",
            "type": "boolean",
            "description": "Leave out throwaway email domains and disposable phone numbers, which are the usual signature of a signup that was never meant to be reachable.",
            "default": false
          },
          "excludeFreeProviders": {
            "title": "Drop free mail providers",
            "type": "boolean",
            "description": "Leave out addresses on free consumer mail providers, keeping only company domains. Useful when the list is meant to be a business one.",
            "default": false
          },
          "requireValidPhone": {
            "title": "Keep only valid phone numbers",
            "type": "boolean",
            "description": "In the phone service, drop numbers the provider could not confirm as valid. Has no effect on the other two services.",
            "default": false
          },
          "lineTypes": {
            "title": "Keep only these line types",
            "type": "array",
            "description": "Only keep phone rows whose line type matches one of these, written as the provider names them, such as mobile or landline. Matching ignores capitalisation. Leave empty to keep every type.",
            "items": {
              "type": "string"
            }
          },
          "excludeProxies": {
            "title": "Drop proxies, VPNs and Tor",
            "type": "boolean",
            "description": "In the IP service, drop addresses flagged as any kind of proxy, VPN, or Tor node. Has no effect on the other two services.",
            "default": false
          },
          "countries": {
            "title": "Keep only these countries",
            "type": "array",
            "description": "Only keep rows resolving to one of these two-letter country codes. Applies to the phone and IP services, which are the two that return a country. Leave empty to keep every country.",
            "items": {
              "type": "string"
            }
          },
          "minRegistrations": {
            "title": "Minimum platform registrations",
            "minimum": 0,
            "maximum": 500,
            "type": "integer",
            "description": "Only keep rows registered on at least this many online platforms. This is the single best proxy for whether an identity is real: an address with a footprint on twenty services has a history, and one with none was very likely created this morning. Leave at zero to keep every row.",
            "default": 0
          },
          "registeredOn": {
            "title": "Must be registered on these platforms",
            "type": "array",
            "description": "Only keep rows registered on every platform named here, written as the provider names them, such as linkedin or spotify. Matching ignores capitalisation. Leave empty to skip this check.",
            "items": {
              "type": "string"
            }
          },
          "minBreachCount": {
            "title": "Minimum breach count",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Only keep rows appearing in at least this many known data breaches. Leave at zero to keep every row.",
            "default": 0
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 1200,
            "type": "integer",
            "description": "Pace the run so it stays under whatever rate your plan allows. The provider allows two requests a second on a trial account and twenty on a production one, so the default of 100 a minute sits safely under the trial limit. Raise it to about 1200 on a production account to finish a long list sooner.",
            "default": 100
          },
          "skipNotFound": {
            "title": "Skip values with no result",
            "type": "boolean",
            "description": "Leave values the provider returned nothing for, and inputs refused before they were sent, out of the dataset. Off by default, because knowing which of your values were unusable is usually the point. Misses are never charged for either way.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum results",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many rows. This is the cap on both spend and run time.",
            "default": 100
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own license key for the digital footprint and risk API, taken from your provider account. Keys are issued per region, so make sure the region above matches the one your account sits on. Stored as a secret."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}