Updated Jul 15, 2026

Recon

Emit Amass subdomain records as structured JSON

OWASP Amass enumeration that emits structured JSON.

Agent

overview

What amass-json does

Slot amass-json when the next stage needs fields, not lines. Feed -d or -df and get FILE plus FOLDER of JSON records with name metadata ready for JQ, tables, or joins.

Reach for it when plain amass text forces a custom parser. Same -passive, -active, -brute, -w, and -timeout controls; only the emit format changes.

Prefer standard amass when a flat name list is enough. Prefer subfinder for lighter passive discovery with its own JSON mode. Bound long -active or -brute runs with -timeout.

source github.com/OWASP/Amass

use cases

Where amass-json fits

Discover subdomains as structured data

Enumerate a domain and emit JSON so each name and its metadata become records the next node can parse, filter, and join instead of plain text.

Run a quiet passive-only enumeration

Use -passive to map the surface from data sources alone without sending active traffic, then read the JSON for triage.

Feed a JSON-aware pipeline

Route amass-json output through JQ or into a table so downstream filtering, deduplication, and correlation work on fields rather than lines.

Brute force and resolve in one pass

Combine -brute with a wordlist via -w and -ip to expand coverage and attach addresses to discovered names in the same JSON stream.

reference

amass-json inputs and flags

37 inputs
NameTypeFlagDescription
domainSTRING-dDomain names separated by commas (can be used multiple times)
domain-listFILE-dfPath to a file providing root domain names
passiveBOOLEAN-passiveA purely passive mode of execution
active-methodsBOOLEAN-activeEnable active recon methods
bruteforce-flagBOOLEAN-brutePerform brute force subdomain enumeration
wordlist-bruteFILE-wPath to a different wordlist file
show-ipBOOLEAN-ipShow the IP addresses for discovered names
timeoutSTRING-timeoutNumber of minutes to execute the enumeration

Showing key inputs. amass-json exposes 37 inputs in total.

Full flag reference (37 inputs)
NameTypeFlagDescription
portsSTRING-pPorts separated by commas (default: 443)
domainSTRING-dDomain names separated by commas (can be used multiple times)
no-altsBOOLEAN-noaltsDisable generation of altered names
passiveBOOLEAN-passiveA purely passive mode of execution
show-ipBOOLEAN-ipShow the IP addresses for discovered names
timeoutSTRING-timeoutNumber of minutes to execute the enumeration
blacklistSTRING-blBlacklist of subdomain names that will not be investigated
show-ipv4BOOLEAN-ipv4Show the IPv4 addresses for discovered names
show-ipv6BOOLEAN-ipv6Show the IPv6 addresses for discovered names
domain-listFILE-dfPath to a file providing root domain names
active-methodsBOOLEAN-activeEnable active recon methods
wordlist-bruteFILE-wPath to a different wordlist file
bruteforce-flagBOOLEAN-brutePerform brute force subdomain enumeration
ini-config-fileFILE-configPath to the INI configuration file
max-dns-queriesSTRING-max-dns-queriesDeprecated flag to be replaced by dns-qps in version 4.0
no-recursive-bfBOOLEAN-norecursiveTurn off recursive brute forcing
trusted-resolverSTRING-trIP addresses of trusted DNS resolver
exclude-data-fileFILE-efPath to a file providing data sources to exclude
min-for-recursiveSTRING-min-for-recursiveSubdomain labels seen before recursive brute forcing (Default: 1)
print-data-sourcesBOOLEAN-srcPrint data sources for the discovered names
untrusted-resolverSTRING-rIP addresses of untrusted DNS resolver
exclude-source-namesSTRING-excludeData source names separated by commas to be excluded
include-data-sourcesSTRING-includeData source names separated by commas to be included
wordlist-alternationsFILE-awPath to a different wordlist file for alterations
dns-queries-per-secondSTRING-dns-qpsMaximum number of DNS queries per second
trusted-resolvers-fileSTRING-trfPath to a file providing trusted DNS resolvers
graph-database-directoryFOLDER-dirPath to the directory containing the graph database
untrusted-resolvers-fileFILE-rfPath to a file providing untrusted DNS resolvers
include-data-sources-fileFILE-ifPath to a file providing data sources to include
trusted-dns-resolvers-fileFILE-trfPath to a file providing trusted DNS resolvers
blacklisted-subdomains-fileFILE-blfPath to a file providing blacklisted subdomains
no-resolver-rate-monitoringBOOLEAN-noresolvrateDisable resolver rate monitoring
untrusted-dns-resolvers-fileFILE-rfPath to a file providing preferred DNS resolvers
already-known-subdomain-namesFILE-nfPath to a file providing already known subdomain names (from other tools/sources)
no-resolver-reliability-scoreBOOLEAN-noresolvscoreDisable resolver reliability scoring
trusted-dns-max-queries-per-secondSTRING-trqpsMaximum number of DNS queries per second for each trusted resolvers
untrusted-dns-max-queries-per-secondSTRING-rqpsMaximum number of DNS queries per second for untrusted resolvers

example

Run amass-json

amass-json · command
# amass-json: passive enumeration with IPs for a root domainamass enum -d example.com -passive -ip
sample output
www.example.comapi.example.commail.example.comdev.example.comstaging.example.comvpn.example.comcdn.example.comapp.example.com

guidance

Choosing amass-json

Use amass-json when you want Amass-grade subdomain discovery and need structured JSON for downstream parse. If a flat text list is enough, standard amass is simpler. Follow with a prober for live hosts.

amass

Same enumeration with plain-text output. Use when downstream nodes do not need JSON.

subfinder

Lighter passive discovery with its own JSON mode. Choose when you skip active methods.

amass-intel

Intel subcommand for org, ASN, and CIDR discovery. Run first to set scope.

faq

amass-json questions

Only the output format. amass-json emits structured JSON records instead of a flat text list, which suits JSON-aware pipelines and tables.

Run amass-json yourself

A domain feeds amass-json, which enumerates subdomains as JSON and passes the names to httpx so only live hosts land as output.

Facts on this page come from the live Trickest tool library.