urlscan.io APIs (1.0.0)

Introduction

API endpoints for urlscan.io and urlscan Pro. Most of these API endpoints require authentication.

The fastest way to start working with our APIs is by using one of the many existing commercial or open-source integrations.

Download OpenAPI description
Overview
urlscan Support

support@urlscan.io

Languages
Servers

http://urlscan.io/

Generic

API endpoints related to the platform or the user account.

Operations

Scanning

These APIs allow URLs to be scanned and the results of the scans to be retrieved.

Operations

Live Scanning

urlscan Pro - Live Scanning allows users to scan websites from different geographical locations and using different device settings.

See additional info about this proprietary feature on urlscan Pro.

Operations

Saved Searches

urlscan Pro - Saved Searches are rules that are executed inline against new incoming scans and hostnames.

Operations

Subscriptions

urlscan Pro - Subscriptions allow notifications for Saved Searches.

Operations

Hostnames

urlscan Pro - Historical information on hostnames and domains

Operations

Brands

urlscan Pro - Information about tracked brands

Operations

Files

urlscan Pro - Downloaded files

Operations

Incidents

urlscan Pro - Incidents track observables, like hostnames and domains, and automatically scan and alert on changes.

Operations

Create Incident

Request

Create an incident with specific options

Security
apikeyAuth
Bodyapplication/jsonrequired
incidentobject
curl -i -X POST \
  http://urlscan.io/api/v1/user/incidents \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "_id": "01JJ4AW0AJYSTD0ND423JZCXNK",
    "scanInterval": 3600,
    "watchedAttributes": [
      "detections",
      "tls"
    ],
    "userAgents": [
      "Chrome on Linux",
      "Chrome on macOS"
    ],
    "userAgentsPerInterval": 1,
    "countries": [
      "de",
      "us"
    ],
    "countriesPerInterval": 2,
    "stopDelaySuspended": 3600,
    "stopDelayInactive": 86400,
    "stopDelayMalicious": 90000,
    "scanIntervalAfterSuspended": 86400,
    "scanIntervalAfterMalicious": 86400,
    "owner": "own",
    "type": "hostname",
    "observable": "foobar.com",
    "state": "active",
    "visibility": "private",
    "channels": [
      "b2af2de0-4154-4f97-967f-9a2eb1e76a7c"
    ],
    "sourceType": "manual",
    "stateSize": 3717,
    "stateCount": 3,
    "scanIntervalMode": "automatic",
    "labels": [
      "hasHTTP",
      "hasIP",
      "hasMX",
      "hasNS"
    ],
    "expireAt": "2025-01-24T11:44:52.563Z",
    "createdAt": "2025-01-21T11:44:52.566Z"
  }'

Responses

Incident body

Bodyapplication/json
incidentobject
Response
application/json
{ "_id": "01JJ4AW0AJYSTD0ND423JZCXNK", "scanInterval": 3600, "watchedAttributes": [ "detections", "tls" ], "userAgents": [ "Chrome on Linux", "Chrome on macOS" ], "userAgentsPerInterval": 1, "countries": [ "de", "us" ], "countriesPerInterval": 2, "stopDelaySuspended": 3600, "stopDelayInactive": 86400, "stopDelayMalicious": 90000, "scanIntervalAfterSuspended": 86400, "scanIntervalAfterMalicious": 86400, "owner": "own", "type": "hostname", "observable": "foobar.com", "state": "active", "visibility": "private", "channels": [ "b2af2de0-4154-4f97-967f-9a2eb1e76a7c" ], "sourceType": "manual", "stateSize": 3717, "stateCount": 3, "scanIntervalMode": "automatic", "labels": [ "hasHTTP", "hasIP", "hasMX", "hasNS" ], "expireAt": "2025-01-24T11:44:52.563Z", "createdAt": "2025-01-21T11:44:52.566Z" }

Get Incident

Request

Get details for a specific incident.

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

curl -i -X GET \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

Incident body

Bodyapplication/json
incidentobject
Response
application/json
{ "_id": "01JJ4AW0AJYSTD0ND423JZCXNK", "scanInterval": 3600, "watchedAttributes": [ "detections", "tls" ], "userAgents": [ "Chrome on Linux", "Chrome on macOS" ], "userAgentsPerInterval": 1, "countries": [ "de", "us" ], "countriesPerInterval": 2, "stopDelaySuspended": 3600, "stopDelayInactive": 86400, "stopDelayMalicious": 90000, "scanIntervalAfterSuspended": 86400, "scanIntervalAfterMalicious": 86400, "owner": "own", "type": "hostname", "observable": "foobar.com", "state": "active", "visibility": "private", "channels": [ "b2af2de0-4154-4f97-967f-9a2eb1e76a7c" ], "sourceType": "manual", "stateSize": 3717, "stateCount": 3, "scanIntervalMode": "automatic", "labels": [ "hasHTTP", "hasIP", "hasMX", "hasNS" ], "expireAt": "2025-01-24T11:44:52.563Z", "createdAt": "2025-01-21T11:44:52.566Z" }

Update Incident options

Request

Update specific runtime options of the incident

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

Bodyapplication/jsonrequired
incidentobject
curl -i -X PUT \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE' \
  -d '{
    "_id": "01JJ4AW0AJYSTD0ND423JZCXNK",
    "scanInterval": 3600,
    "watchedAttributes": [
      "detections",
      "tls"
    ],
    "userAgents": [
      "Chrome on Linux",
      "Chrome on macOS"
    ],
    "userAgentsPerInterval": 1,
    "countries": [
      "de",
      "us"
    ],
    "countriesPerInterval": 2,
    "stopDelaySuspended": 3600,
    "stopDelayInactive": 86400,
    "stopDelayMalicious": 90000,
    "scanIntervalAfterSuspended": 86400,
    "scanIntervalAfterMalicious": 86400,
    "owner": "own",
    "type": "hostname",
    "observable": "foobar.com",
    "state": "active",
    "visibility": "private",
    "channels": [
      "b2af2de0-4154-4f97-967f-9a2eb1e76a7c"
    ],
    "sourceType": "manual",
    "stateSize": 3717,
    "stateCount": 3,
    "scanIntervalMode": "automatic",
    "labels": [
      "hasHTTP",
      "hasIP",
      "hasMX",
      "hasNS"
    ],
    "expireAt": "2025-01-24T11:44:52.563Z",
    "createdAt": "2025-01-21T11:44:52.566Z"
  }'

Responses

Incident body

Bodyapplication/json
incidentobject
Response
application/json
{ "_id": "01JJ4AW0AJYSTD0ND423JZCXNK", "scanInterval": 3600, "watchedAttributes": [ "detections", "tls" ], "userAgents": [ "Chrome on Linux", "Chrome on macOS" ], "userAgentsPerInterval": 1, "countries": [ "de", "us" ], "countriesPerInterval": 2, "stopDelaySuspended": 3600, "stopDelayInactive": 86400, "stopDelayMalicious": 90000, "scanIntervalAfterSuspended": 86400, "scanIntervalAfterMalicious": 86400, "owner": "own", "type": "hostname", "observable": "foobar.com", "state": "active", "visibility": "private", "channels": [ "b2af2de0-4154-4f97-967f-9a2eb1e76a7c" ], "sourceType": "manual", "stateSize": 3717, "stateCount": 3, "scanIntervalMode": "automatic", "labels": [ "hasHTTP", "hasIP", "hasMX", "hasNS" ], "expireAt": "2025-01-24T11:44:52.563Z", "createdAt": "2025-01-21T11:44:52.566Z" }

Close Incident

Request

Close (stop) the incident

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

Bodyapplication/json
curl -i -X PUT \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}/close' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Restart Incident

Request

Restart a closed incident. Automatically extends the incident expireAt. Starts with new incident states.

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

Bodyapplication/json
curl -i -X PUT \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}/restart' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Copy Incident

Request

Copy an incident without its history.

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

Bodyapplication/json
curl -i -X PUT \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}/copy' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Fork Incident

Request

Copy an incident along with its history (incident states).

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

Bodyapplication/json
curl -i -X PUT \
  'http://urlscan.io/api/v1/user/incidents/{incidentId}/fork' \
  -H 'Content-Type: application/json' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Get Watchable Attributes

Request

Get the list of attributes which can be supplied to the watchedAttributes property of the incident.

Security
apikeyAuth
curl -i -X GET \
  http://urlscan.io/api/v1/user/watchableAttributes \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Get Incident States

Request

Retrieve individual incident states of an incident.

Security
apikeyAuth
Path
incidentIdstringrequired

ID of incident

curl -i -X GET \
  'http://urlscan.io/api/v1/user/incidentstates/{incidentId}/' \
  -H 'api-key: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/json
incidentstatesArray of objects
Response
application/json
{ "incidentstates": [ {} ] }