Search all guides

Reference · Tools

urlscan.io integration

Submit URLs for security scanning and retrieve detailed analysis results from urlscan.io, a website scanning and analysis sandbox service.

Action Development v1

The urlscan.io node submits URLs to the scanning sandbox and retrieves the analysis — network activity, detected technologies and security verdicts. A typical build is scanning links reported by users and routing anything flagged malicious to the security team.

Works as
Action
Tool name
url_scan_io
Operations
3 — Get , Get Many , Perform
Parameters
9
Outputs
Output, Error
Credentials
urlscan.io API
Official docs
urlscan.io docs docs.urlscan.io

What you can build with urlscan.io

  • Submit a URL for security scanning on urlscan.io.
  • Get the full results of a completed urlscan.io scan.
  • Search urlscan.io for scans of a specific domain.
  • List recent scans matching an Elasticsearch query.
  • Scan a suspicious URL and check security verdicts.

Overview

urlscan.io is a free service to scan and analyse websites. It inspects the page by navigating to it like a regular user and records the activity that the page creates: JavaScript, requests, cookies, redirects, technologies, and more. This tool supports three operations on the Scan resource: Perform (submit a URL for asynchronous scanning), Get (retrieve results of a completed scan by ID), and Get Many (search scans using Elasticsearch query syntax with cursor-based pagination). Authentication is via API key passed in the API-KEY header. Base URL: https://urlscan.io/api/v1. Note that scan:perform is asynchronous — the scan takes 10-30 seconds to complete before results can be retrieved.

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires urlscan.io API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Scanscan

Operations

OperationValueDescription
GetgetGet a scan result
Get ManygetAllSearch and retrieve many scans
PerformperformSubmit a URL for scanning

Parameters

Scan: Get

ParameterTypeRequiredDefaultDescription
Scan IDstringYes—ID of the scan to retrieve. This is the UUID returned by the Perform operation. Supports expressions like {{ $json.scanId }}.

Scan: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. Supports expressions. (shown when Return All is false)
FilterscollectionNo{}Search filters to narrow down scan results.
— QuerystringNo—Search query using Elasticsearch Query String syntax. Supported fields include: domain, ip, page.server, page.status, task.tags, date, filename, and more. See https://urlscan.io/docs/search/ for full documentation.

Scan: Perform

ParameterTypeRequiredDefaultDescription
URLstringYes—URL to scan. The scan is asynchronous and typically takes 10-30 seconds to complete. Supports expressions like {{ $json.url }}.
Additional FieldscollectionNo{}Optional parameters for the scan submission.
— Custom AgentstringNo—User-Agent header to set for this scan. Defaults to the urlscan.io scanner agent.
— Override SafetystringNo—Disable reclassification of URLs with potential PII in them.
— RefererstringNo—HTTP referer to set for this scan.
— TagsstringNo—Comma-separated list of user-defined tags to add to this scan. Limited to 10 tags.
— VisibilityoptionsNoprivateScan visibility level. Private scans are only visible to you, public scans are listed in the public feed, unlisted scans are accessible via direct link.
Options: private, public, unlisted

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The urlscan.io response is merged onto the input item JSON — fields already on the item pass through and the result is written on top of them. Binary data is forwarded unchanged.

OperationOutput items per input item
performOne item confirming the submission, including the scan’s scanId and the API URLs to poll
getOne item carrying the full scan result (page, lists, verdicts, task, stats, and related sections)
getAllFans out — one item per matching scan

Scan identifiers are normalised: urlscan.io reports uuid on a submission and _id on a search hit, and both are rewritten to scanId before the item is written, so one expression works everywhere. If a search matches nothing, the input item still passes through as a single output item with nothing added.

perform is asynchronous — it returns as soon as the scan is queued, not when it finishes. Wait 10-30 seconds, then feed {{ $json.scanId }} into a second node running get.

With Return All on, getAll pages through the whole result set with the search cursor; with it off, it fetches pages until it has Limit results and trims to that.

Reference the result downstream by expression, e.g. {{ $json.scanId }}.

Example Configuration

Submit a URL for a private scan and tag it:

{
  "type": "url_scan_io",
  "parameters": {
    "resource": "scan",
    "operation": "perform",
    "url": "{{ $json.url }}",
    "additionalFields": {
      "visibility": "private",
      "tags": "security, phishing-check",
      "referer": "https://example.com"
    }
  }
}

Retrieve the results of a completed scan:

{
  "type": "url_scan_io",
  "parameters": {
    "resource": "scan",
    "operation": "get",
    "scanId": "{{ $json.scanId }}"
  }
}

Search recent scans for a domain, capped at 25 results:

{
  "type": "url_scan_io",
  "parameters": {
    "resource": "scan",
    "operation": "getAll",
    "returnAll": false,
    "limit": 25,
    "filters": {
      "query": "domain:{{ $json.domain }}"
    }
  }
}

Page through every scan matching a query:

{
  "type": "url_scan_io",
  "parameters": {
    "resource": "scan",
    "operation": "getAll",
    "returnAll": true,
    "filters": {
      "query": "page.country:US AND task.tags:phishing"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

This tool submits URLs to urlscan.io for security scanning and retrieves detailed website analysis results. It is ideal when you need to perform a new scan or retrieve existing scan results, rather than other tools that might only provide basic URL information. It produces comprehensive scan reports detailing network activity, technologies used, and security verdicts.

Frequently asked questions

What does the analysis include?

Network activity, the technologies the page uses, and security verdicts — enough to triage a suspicious link without opening it yourself.

Is scanning immediate?

Submission and retrieval are separate steps because scanning takes time. Submit the URL, then retrieve the result once the scan has completed.

What is a typical security use?

Automatically scanning URLs from reported phishing emails, so an analyst sees the verdict rather than clicking the link to investigate.

Which credential does it need?

A urlscan.io API credential.

Build with urlscan.io

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need urlscan.io API credentials first.

Open BusyBot

Last reviewed . Spotted something wrong? Tell us.