{
  "openapi": "3.0.1",
  "info": {
    "title": "Skip Trace API - Property Owner Phone, Email and Address",
    "description": "Skip trace US property owners and search 150M+ property records. Turn addresses into owner phone numbers and emails with do-not-call and litigator flags, run a phone or email back to the person and their properties, or pull absentee owner, high equity, vacant and preforeclosure lists.",
    "version": "0.1",
    "x-build-id": "fjY6q8PyT3x1ojD6p"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~skip-trace-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-skip-trace-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~skip-trace-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-skip-trace-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~skip-trace-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-skip-trace-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 do",
            "enum": [
              "search",
              "skipTrace",
              "reverseSkipTrace"
            ],
            "type": "string",
            "description": "Search finds properties matching your filters. Skip trace turns a list of property addresses into the owner's phone numbers and email addresses. Reverse skip trace goes the other way, from a phone number or email address to the person and the properties they are on.",
            "default": "search"
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Search mode. A partial USPS address that narrows the search to one area, for example \"Phoenix, AZ\", \"Maricopa County, AZ\" or \"85086\". Owner name searches always need a location."
          },
          "quickLists": {
            "title": "Named lists (all must match)",
            "type": "array",
            "description": "Search mode. The provider's own business-rule lists. Every list you pick must match, and at most three may be combined in one search. Prefix a value with not- to exclude it, for example not-owner-occupied.",
            "items": {
              "type": "string",
              "enum": [
                "absentee-owner",
                "active-auction",
                "active-listing",
                "canceled-listing",
                "cash-buyer",
                "corporate-owned",
                "expired-listing",
                "failed-listing",
                "fix-and-flip",
                "free-and-clear",
                "for-sale-by-owner",
                "has-hoa",
                "has-hoa-fees",
                "high-equity",
                "inherited",
                "involuntary-lien",
                "in-state-absentee-owner",
                "listed-below-market-price",
                "low-equity",
                "mailing-address-vacant",
                "notice-of-default",
                "notice-of-lis-pendens",
                "notice-of-sale",
                "on-market",
                "out-of-state-absentee-owner",
                "out-of-state-owner",
                "owner-occupied",
                "pending-listing",
                "preforeclosure",
                "recently-sold",
                "same-property-and-mailing-address",
                "senior-owner",
                "tax-default",
                "tired-landlord",
                "trust-owned",
                "unknown-equity",
                "vacant",
                "vacant-lot"
              ]
            }
          },
          "anyOfQuickLists": {
            "title": "Named lists (any may match)",
            "type": "array",
            "description": "Search mode. The same business-rule lists, but a property matches if any one of them applies. Use this for a wider net, for example distressed sellers across notice-of-default, preforeclosure and tax-default. At most three.",
            "items": {
              "type": "string",
              "enum": [
                "absentee-owner",
                "active-auction",
                "active-listing",
                "canceled-listing",
                "cash-buyer",
                "corporate-owned",
                "expired-listing",
                "failed-listing",
                "fix-and-flip",
                "free-and-clear",
                "for-sale-by-owner",
                "has-hoa",
                "has-hoa-fees",
                "high-equity",
                "inherited",
                "involuntary-lien",
                "in-state-absentee-owner",
                "listed-below-market-price",
                "low-equity",
                "mailing-address-vacant",
                "notice-of-default",
                "notice-of-lis-pendens",
                "notice-of-sale",
                "on-market",
                "out-of-state-absentee-owner",
                "out-of-state-owner",
                "owner-occupied",
                "pending-listing",
                "preforeclosure",
                "recently-sold",
                "same-property-and-mailing-address",
                "senior-owner",
                "tax-default",
                "tired-landlord",
                "trust-owned",
                "unknown-equity",
                "vacant",
                "vacant-lot"
              ]
            }
          },
          "ownerFirstName": {
            "title": "Owner first name",
            "type": "string",
            "description": "Search mode. Matched word by word, in any order and ignoring case, so you do not need to know how the county stored the name. Giving both a first and a last name matches only when both appear on the same owner record. Needs a location."
          },
          "ownerLastName": {
            "title": "Owner last name",
            "type": "string",
            "description": "Search mode. Matched the same way as the first name. Needs a location."
          },
          "addressStreet": {
            "title": "Street address",
            "type": "string",
            "description": "Search mode. Narrows the search to one address, for example \"41028 N Congressional Dr\"."
          },
          "addressCity": {
            "title": "City",
            "type": "string",
            "description": "Search mode. The city for the street address above."
          },
          "addressState": {
            "title": "State",
            "type": "string",
            "description": "Search mode. The two letter state code for the street address above, for example AZ."
          },
          "addressZip": {
            "title": "ZIP code",
            "type": "string",
            "description": "Search mode. The five digit ZIP code for the street address above."
          },
          "listingStatus": {
            "title": "Listing status",
            "type": "array",
            "description": "Search mode. Keeps only properties whose current listing status is one of these, for example Active or Pending. One per line.",
            "items": {
              "type": "string"
            }
          },
          "soldFrom": {
            "title": "Last sold on or after",
            "type": "string",
            "description": "Search mode. Keeps only properties whose last sale is on or after this date, written as YYYY-MM-DD."
          },
          "soldTo": {
            "title": "Last sold on or before",
            "type": "string",
            "description": "Search mode. Keeps only properties whose last sale is on or before this date, written as YYYY-MM-DD."
          },
          "searchCriteria": {
            "title": "Extra search criteria",
            "type": "object",
            "description": "Search mode, optional. Any further criteria in the provider's own format, merged over the fields above. The provider indexes more than twenty sections including assessment, building, foreclosure, lot, openLien, tax and valuation, so this is how to reach one the form does not cover."
          },
          "datasets": {
            "title": "Data sections to return",
            "type": "array",
            "description": "Search mode, optional. Which sections of each property record to return. Leave empty for everything your plan allows. Richer sections cost more per record on the provider's side. Basic and core are mutually exclusive; if you pick both, core is used.",
            "items": {
              "type": "string",
              "enum": [
                "basic",
                "comps",
                "batchrank",
                "contact",
                "core",
                "deed",
                "demographic",
                "foreclosure",
                "image",
                "listing",
                "mortgage-liens",
                "owner",
                "permit",
                "quicklist",
                "valuation"
              ]
            }
          },
          "includeOwnerContacts": {
            "title": "Add owner contacts to search results",
            "type": "boolean",
            "description": "Search mode. Asks the provider to enrich each matched property with the owner's phone numbers and email addresses. The provider charges extra for every property it matches contacts to, on top of the property record itself.",
            "default": false
          },
          "addresses": {
            "title": "Property addresses",
            "type": "array",
            "description": "Skip trace mode. One property address per line. Each needs a street plus either a five digit ZIP or both a city and a two letter state, for example \"1011 Rosegold St, Franklin Square, NY 11010\".",
            "items": {
              "type": "string"
            }
          },
          "phonesOrEmails": {
            "title": "Phone numbers or email addresses",
            "type": "array",
            "description": "Reverse skip trace mode. One ten digit US phone number or email address per line. Dashes, spaces, brackets and a leading 1 are all fine.",
            "items": {
              "type": "string"
            }
          },
          "includeRestrictedPhones": {
            "title": "Include restricted phone numbers",
            "type": "boolean",
            "description": "Skip trace and reverse skip trace. Keeps numbers flagged under the Telephone Consumer Protection Act in the results, each marked so you can exclude it yourself. Every row also carries a separate ready-to-dial list with do-not-call and litigator numbers already removed. Turn this off to have the provider drop them.",
            "default": true
          },
          "propertyOwnersOnly": {
            "title": "Property owners only",
            "type": "boolean",
            "description": "Reverse skip trace mode. Returns only people who own the property at their highest ranked address. The provider applies this before its three person limit, so the results are not simply a subset of an unfiltered run and can surface an owner an unfiltered run would miss.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "type": "integer",
            "description": "The most rows this run will save and charge for. The provider bills per record returned, so this is the spending control on both sides.",
            "default": 1000
          },
          "pageSize": {
            "title": "Results per request",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Search mode. How many properties to ask for at a time, up to the provider's ceiling of 100. A wider page is not a cheaper one, because billing counts records rather than requests.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 600,
            "type": "integer",
            "description": "How fast to call the provider. Lower this if your plan rate limits the run.",
            "default": 60
          },
          "apiKey": {
            "title": "API token",
            "type": "string",
            "description": "Your own API token for the property and skip trace provider, taken from your account. This actor is bring your own key: it never uses anyone else's credentials, and the token is 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}