PADNS

PADNS endpoints

These endpoints return Passive DNS data

forward PADNS lookup

GET /explore/padns/lookup/query/{qtype}/{qname}

Forward lookup of Passive DNS data

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • a

      • aaaa

      • cname

      • mx

      • ns

      • ptr4

      • ptr6

      • any

      • anyipv4

      • anyipv6

      • soa

      • txt

  • qname (string) (required) –

    • specify a name or IP address to lookup

      • name - wildcards (*) are supported in name string

      • IPv4

      • IPv6

  • netmask =<n> (int) (optional) –

    • net mask may be given for qtypes ptr4 or ptr6

      • defaults: IPv4 = 32, IPv6 = 128

  • subdomains =<n> (int) (optional) –

    • include or exclude subdomains from qtype a or aaaa results

      • 0 = exclude

      • 1 = include

  • regex =<pattern> (pattern) (optional) –

    • re2 regular expression

      • pattern must be a valid re2 regular expression

  • match =<strict|self> (string) (optional) –

    • limit results to self-hosted infrastructure for qtype mx or ns

      • strict (default) - find all matching results

      • self - only show results where mx or ns records are in the same domain as qname

  • first_seen_after =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • first_seen_before =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_after =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_before =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • as_of =<date|epoch|sec|period> (optional) –

    • only return records where the as_of timestamp equivalent is between the first_seen and the last_seen timestamp

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • sort =<sort/order> (optional) –

    • order results in specified order - parameter may be repeated with different column names to produce a nested sorting effect

      • sort:

        • last_seen/last/time_last - synonyms for last_seen column

        • first_seen/first/time_first - synonyms for first_seen column

        • query/rrname - synonyms for query column

        • answer/rdata - synonyms for answer_seen column

      • order:

        • asc/+/up - synonyms for ascending order

        • desc/-/down - synonyms for descending order

  • output_format =<padns|cof> (optional) –

    • padns (default) - Silent Push padns output format

    • cof - common output format

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

Wildcards (*) are supported in qname

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/query/ns/sil*push.*

Note

Regular expression patterns must follow the re2 specification - backtracking and look-around assertions are not supported

Note

Using a regular expression overrides the qname parameter including any wildcards - when using the regex query parameter, qname may optionally be substituted by an underscore:

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/query/ns/_?regex=^sil[[:alpha:]]{3}\.[a-z]{2,}$

Note

For best performance, regular expressions should begin with ^ and end with $ - i.e. match from beginning of name to end of name

Warning

Regular expressions are slower than exact or wildcard match - wildcards should be used instead, whenever possible

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/query/ns/silentpush.com \
     ?last_seen_after=-172800 \
     &sort=last_seen/desc

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "vida.ns.cloudflare.com",
                "count": 236,
                "first_seen": "2020-12-24 19:04:43",
                "last_seen": "2021-07-09 16:39:51",
                "nshash": "850c47a684c9ea9c32ece18e7be4cddc",
                "query": "silentpush.com",
                "ttl": 172800,
                "type": "NS"
            },
            {
                "answer": "henry.ns.cloudflare.com",
                "count": 236,
                "first_seen": "2020-12-24 19:04:43",
                "last_seen": "2021-07-09 16:39:51",
                "nshash": "850c47a684c9ea9c32ece18e7be4cddc",
                "query": "silentpush.com",
                "ttl": 172800,
                "type": "NS"
            }
        ]
    }
}

reverse PADNS lookup

GET /explore/padns/lookup/answer/{qtype}/{qname}

Reverse lookup of Passive DNS data

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • a

      • aaaa

      • cname

      • mx

      • ns

      • ptr4

      • ptr6

      • soa

      • txt

      • mxhash

      • nshash

      • soahash

      • txthash

  • qname (string) (required) –

    • specify a name or IP address to lookup

      • name - wildcards (*) are supported in name string

      • IPv4

      • IPv6

  • netmask =<n> (int) (optional) –

    • net mask may be given for qtypes a or aaaa

      • defaults: IPv4 = 32, IPv6 = 128

  • subdomains =<n> (int) (optional) –

    • include or exclude subdomains from qtype a or aaaa results

      • 0 = exclude

      • 1 = include

  • regex =<pattern> (pattern) (optional) –

    • re2 regular expression

      • pattern must be a valid re2 regular expression

  • first_seen_after =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • first_seen_before =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_after =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_before =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • as_of =<date|epoch|sec|period> (optional) –

    • only return records where the as_of timestamp equivalent is between the first_seen and the last_seen timestamp

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • sort =<sort/order> (optional) –

    • order results in specified order - parameter may be repeated with different column names to produce a nested sorting effect

      • sort:

        • last_seen/last/time_last - synonyms for last_seen column

        • first_seen/first/time_first - synonyms for first_seen column

        • query/rrname - synonyms for query column

        • answer/rdata - synonyms for answer_seen column

      • order:

        • asc/+/up - synonyms for ascending order

        • desc/-/down - synonyms for descending order

  • output_format =<padns|cof> (optional) –

    • padns (default) - Silent Push padns output format

    • cof - common output format

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

Wildcards (*) are supported in qname

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/ns/vida.ns.cloudflare.com

Note

The reverse txt lookup will look for the string given in qname anywhere in the txt record value

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/txt/verification-code=70c3e598

Note

Wildcards (*) may be used in qname for reverse txt lookup

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/txt/verification*=70c3e598

Note

The reverse soa lookup will look for the string given in qname anywhere in the soa record value

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/soa/jomax

Note

Wildcards (*) may be used in qname for reverse soa lookup

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/soa/jomax.net*20210725

Note

Regular expression patterns must follow the re2 specification - backtracking and look-around assertions are not supported

Note

Using a regular expression overrides the qname parameter including any wildcards - when using the regex query parameter, qname may optionally be substituted by an underscore:

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/mx/_?regex=^.*sil[[:alpha:]]{3}\.[a-z]{2,}$

Note

For best performance, regular expressions should begin with ^ and end with $ - i.e. match from beginning of name to end of name

Warning

Regular expressions are slower than exact or wildcard match - wildcards should be used instead, whenever possible

Warning

Regular expressions are not supported for qtype=txt or qtype=soa

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/answer/ns/vida.ns.cloudflare.com \
     ?last_seen_after=2021-07-01 \
     &limit=2

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "vida.ns.cloudflare.com",
                "count": 58,
                "first_seen": "2021-04-30 18:29:30",
                "last_seen": "2021-07-10 18:32:14",
                "nshash": "7659b08bfceced5ef1ad24c26d2e8078",
                "query": "gsjjyzs.com",
                "ttl": 86400,
                "type": "NS"
            },
            {
                "answer": "vida.ns.cloudflare.com",
                "count": 7,
                "first_seen": "2021-07-05 19:42:44",
                "last_seen": "2021-07-10 18:32:11",
                "nshash": "28e44562b64c3a4f355a877e97cb6fa4",
                "query": "gscooling.com",
                "ttl": 86400,
                "type": "NS"
            }
        ]
    }
}

multi-condition PADNS lookup

GET /explore/padns/lookup/both/{qtype}/{qname}/{qanswer}

Search passive DNS data for records of <qtype> where query is <qname> and answer is <qanswer> - wildcards are supported in both qname and qanswer

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • a

      • aaaa

      • cname

      • mx

      • ns

      • ptr4

      • ptr6

  • qname (string) (required) –

    • specify a name or IP address to lookup

      • name - wildcards (*) are supported in name string

      • IPv4

      • IPv6

  • qanswer (string) (required) –

    • specify a name or IP address to lookup

      • name - wildcards (*) are supported in name string

      • IPv4

      • IPv6

  • match =<eq|noteq> (string) (optional) –

    • find records where query = <qname> and answer equal or not equal to <qanswer>

      • eq (default) - answer must match <qanswer>

      • neq - answer must not match <qanswer>

  • name =<name|pattern> (string) (optional) –

    • additional name to match qanswer

    • up to 5 additional names may be given - wildcards are supported

  • netmask =<n> (int) (optional) –

    • net mask may be given for qtypes a or aaaa

    • use to find records in the same subnet

      • defaults: IPv4 = 32, IPv6 = 128

  • net =<in|notin> (string) (optional) –

    • find ptr4 or a records where ipv4 in or not in subnet defined by netmask

      • in (default) - find records in subnet

      • notin - find records not in subnet

  • network =<subnet> (string) (optional) –

    • additional network and net mask

    • give option as 1.1.1.1/24

    • up to 5 additional networks may be given

  • asnum =<n> (int) (optional) –

    • AS number to search, may be repeated multiple time for additional AS numbers

    • parameter may be used with qtype=a or qtype=ptr4

    • use to find records in the same AS number

  • asn =<in|notin> (string) (optional) –

    • find ptr4 or a records where ipv4 in or not in ASN defined by asnum

      • in (default) - find records in ASN

      • notin - find records not in ASN

  • asname =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_starts_with =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_contains =<name> (string) (optional) –

    • search all AS numbers where the AS Name contains <name>

  • first_seen_after =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • first_seen_before =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_after =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_before =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • as_of =<date|epoch|sec|period> (optional) –

    • only return records where the as_of timestamp equivalent is between the first_seen and the last_seen timestamp

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • sort =<sort/order> (optional) –

    • order results in specified order - parameter may be repeated with different column names to produce a nested sorting effect

      • sort:

        • last_seen/last/time_last - synonyms for last_seen column

        • first_seen/first/time_first - synonyms for first_seen column

        • query/rrname - synonyms for query column

        • answer/rdata - synonyms for answer_seen column

      • order:

        • asc/+/up - synonyms for ascending order

        • desc/-/down - synonyms for descending order

  • output_format =<padns|cof> (optional) –

    • padns (default) - Silent Push padns output format

    • cof - common output format

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

Wildcards (*) are supported in qname and qanswer

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/both/ns/sil*push.*/*.ns.cloudflare.com

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/both/ns/sil*push.*/*.ns.cloudflare.com \
     ?last_seen_after=2021-07-01 \
     &limit=2

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "vida.ns.cloudflare.com",
                "count": 236,
                "first_seen": "2020-12-24 19:04:43",
                "last_seen": "2021-07-09 16:39:51",
                "nshash": "850c47a684c9ea9c32ece18e7be4cddc",
                "query": "silentpush.com",
                "ttl": 172800,
                "type": "NS"
            },
            {
                "answer": "henry.ns.cloudflare.com",
                "count": 236,
                "first_seen": "2020-12-24 19:04:43",
                "last_seen": "2021-07-09 16:39:51",
                "nshash": "850c47a684c9ea9c32ece18e7be4cddc",
                "query": "silentpush.com",
                "ttl": 172800,
                "type": "NS"
            }
        ]
    }
}

Tip

Example exclusion search - similar domains not on given name servers:

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/both/ns/sil*push.*/*.ns.cloudflare.com \
    ?last_seen_after=2021-07-01 \
    &limit=2 \
    &match=neq
{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "dns1.registrar-servers.com",
                "count": 299,
                "first_seen": "2020-12-25 22:55:52",
                "last_seen": "2021-07-10 19:03:43",
                "nshash": "12241179c5fb5626e98315c13551f23a",
                "query": "silverpush.co",
                "ttl": 3600,
                "type": "NS"
            },
            {
                "answer": "dns2.registrar-servers.com",
                "count": 299,
                "first_seen": "2020-12-25 22:55:52",
                "last_seen": "2021-07-10 19:03:43",
                "nshash": "12241179c5fb5626e98315c13551f23a",
                "query": "silverpush.co",
                "ttl": 3600,
                "type": "NS"
            }
        ]
    }
}

Live Unsanctioned Assets PADNS lookup

GET /explore/padns/lookup/uld/{qtype}/{qname}/{qanswer}

Similar A records in similar domains in/not in networks specified by qanswer, netmask and network parameters where the similar domain is on/not on name servers specified by one or more nsname parameters

The default is to look at new records with a first_seen timestamp within the last 30 days, but the exact time period can be defined explicitly

This can be used to find spoofing domains hosted on unsanctioned infrastructure

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • a

      • aaaa

  • qname (string) (required) –

    • specify a name to lookup

      • name - wildcards (*) are required in name string

      • _ - use underscore as placeholder if regex is given

  • regex =<pattern> (pattern) (optional) –

    • re2 regular expression

      • pattern must be a valid re2 regular expression

      • regex overrides any qname given

  • qanswer (string) (required) –

    • IP address to look for records - use in combination with netmask parameter to specify subnet

      • IPv4 address

      • IPv6 address

      • _ - use underscore as placeholder if no IP match is required

  • nsname =<name|pattern> (string) (optional) –

    • nsname specifies name or pattern of name server where a domain is/is not hosted

    • up to 5 nsname parameters may be given - wildcards are supported

  • match =<eq|noteq> (string) (optional) –

    • finds domains not on (neq) or on (eq) name servers given as nsname parameters

      • eq - domains on name servers

      • neq (default) - domains not on name servers

  • netmask =<n> (int) (optional) –

    • net mask may be given for qtypes a or aaaa

    • used in combination with qanswer to define subnet

    • use to find records in the same subnet

      • defaults: IPv4 = 32, IPv6 = 128

  • net =<in|notin> (string) (optional) –

    • find records where ip not in (default) or in subnet defined by netmask and additional network parameters

      • in - find records in subnet

      • notin (default) - find records not in subnet

  • network =<subnet> (string) (optional) –

    • additional network and net mask

    • give option as 1.1.1.1/24

    • up to 5 additional networks may be given

  • asnum =<n> (int) (optional) –

    • AS number to search, may be repeated multiple time for additional AS numbers

    • parameter may be used with qtype=a or qtype=ptr4

    • use to find records in the same AS number

  • asn =<in|notin> (string) (optional) –

    • find ptr4 or a records where ipv4 in or not in ASN defined by asnum

      • in - find records in ASN

      • notin (default) - find records not in ASN

  • asname =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_starts_with =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_contains =<name> (string) (optional) –

    • search all AS numbers where the AS Name contains <name>

  • reduce =<full|host> (string) (optional) –

    • aggregate timestamps for qname only (host) or for each qname=>qanswer observation (full)

      • full (default) - show timestamps for qname=>qanswer observations

      • host - show timestamps for distinct qname only

  • first_seen_after =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or after this time

      • default=-2592000 - look back 30 days

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • first_seen_before =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_after =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_before =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • as_of =<date|epoch|sec|period> (optional) –

    • only return records where the as_of timestamp equivalent is between the first_seen and the last_seen timestamp

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • sort =<sort/order> (optional) –

    • order results in specified order - parameter may be repeated with different column names to produce a nested sorting effect

      • sort:

        • last_seen/last/time_last - synonyms for last_seen column

        • first_seen/first/time_first - synonyms for first_seen column

        • query/rrname - synonyms for query column

        • answer/rdata - synonyms for answer_seen column

      • order:

        • asc/+/up - synonyms for ascending order

        • desc/-/down - synonyms for descending order

  • output_format =<padns|cof> (optional) –

    • padns (default) - Silent Push padns output format

    • cof - common output format

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

reduce=host gives aggregation on hostname without pairing with IP resolutions - this gives observation dates for the hostname regardless of IP history

Note

Wildcards (*) are supported in qname and nsname parameters

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/uld/a/well*rgo.*/159.45.71.0 \
     ?netmask=20 \
     &network=159.45.170.0/20 \
     &nsname=*.wf.com \
     &nsname=*.wellsfargo.com \
     &nsname=*.markmonitor.com \
     &asname_starts_with=wellsfargo \
     &asn=notin \
     &net=notin \
     &match=neq \
     &last_seen_after=2021-07-01 \
     &limit=2

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "192.187.111.222",
                "asn": 33387,
                "count": 3,
                "domain": "wellxsfargo.com",
                "first_seen": "2021-06-25 20:27:29",
                "last_seen": "2021-07-10 19:56:31",
                "query": "wellxsfargo.com",
                "type": "A"
            },
            {
                "answer": "63.141.242.44",
                "asn": 33387,
                "count": 2,
                "domain": "wellsfaprgo.com",
                "first_seen": "2021-07-07 10:51:36",
                "last_seen": "2021-07-10 19:56:30",
                "query": "wellsfaprgo.com",
                "type": "A"
            }
        ]
    }
}

translate hash to server names

GET /explore/padns/lookup/translate/{qtype}/{query}

Show server names that belong to an nshash or mxhash

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • nshash

      • mxhash

  • query (string) (required) –

    • specify a hash value to translate

      • nshash or mxhash

Request Headers
  • X-API-KEYapi-key

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/translate/nshash/850c47a684c9ea9c32ece18e7be4cddc

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "nshash": "850c47a684c9ea9c32ece18e7be4cddc"
            },
            [
                {
                "nssrv": "henry.ns.cloudflare.com"
                },
                {
                "nssrv": "vida.ns.cloudflare.com"
                }
            ]
        ]
    }
}

density lookup

GET /explore/padns/lookup/density/{qtype}/{query}

Get density (number of domains) for qtype

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • nssrv

      • mxsrv

      • nshash

      • mxhash

      • ipv4

      • ipv6

      • asn

  • query (string) (required) –

    • specify a value to lookup

      • name of NS or MX server

      • hash of NS or MX server

      • IPv4 or IPv6 address

      • AS number

  • scope (string) (optional) –

    • exact or near match results by qtype

      • for qtype = ipv4

        • ip - exact match (default when qtype=ipv4)

        • subnet - summary of subnet for ipv4

        • subnet_ips - density for all ips in subnet

        • asn - summary of asn for ipv4

        • asn_subnets - summary for all subnets in asn

      • for qtype = asn

        • asn - summary of asn (default when qtype=asn)

        • asn_subnets - summary for all subnets in asn

      • for qtype = nssrv or qtype = mxsrv

        • host - exact match (default when qtype=nssrv or qtype=mxsrv)

        • domain - match all hosts in this domain (domain extracted from {query})

        • subdomain - match all hosts at this subdomain level (i.e. *.{query})

Request Headers
  • X-API-KEYapi-key

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/density/nssrv/vida.ns.cloudflare.com

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "density": 64082,
                "nssrv": "vida.ns.cloudflare.com"
            }
        ]
    }
}

Tip

Example subnet scope from IPv4 address:

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/density/ipv4/1.1.1.1?scope=subnet
{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn": 13335,
                "density_avg": 187.9,
                "density_max": 37852,
                "density_stddev": 2630.6,
                "ips_active": 206,
                "subnet": "1.1.1.0/24",
                "subnet_size": 256
            }
        ]
    }
}

IP diversity lookup

GET /explore/padns/lookup/ipdiversity/{qtype}/{query}

Get ip diversity (number of ip addresses pointed to over time) for query of qtype

Query Parameters
  • qtype (string) (required) –

    • the following qypes are supported:

      • a

      • aaaa

  • query (string) (required) –

    • specify a value to lookup

      • name of A or AAAA record

  • window =<n> (int) (optional) –

    • use records with a last_seen more recently than <n> days ago

      • default = 30

  • asn =<0|1> (int) (optional) –

    • include asn diversity

      • 0 = do not include

      • 1 (default) = include asn diversity

  • timeline =<0|1> (int) (optional) –

    • include timeline of {ip, first_seen, last_seen} (+asn if asn=1)

      • 0 (default) = do not include

      • 1 = include timeline

  • verbose =<0|1> (int) (optional) –

    • return ips, dates, timeline, (and asns if asn=1)

      • 0 (default) = do not include

      • 1 = include all data

  • scope (string) (optional) –

    • exact or near match results by qtype

    • scope=live is automatically set when timeline=1 or verbose=1

      • for qtype = a

        • host - exact match (default when qtype=a)

        • domain - match all hosts in this domain (domain extracted from {query})

        • subdomain - match all hosts at this subdomain level (i.e. *.{query})

        • live - calculate values from live data instead of pre-aggregated values - also switches to exact match only

      • for qtype = aaaa

        • live - only this mode is supported for qtype=aaaa

Request Headers
  • X-API-KEYapi-key

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/ipdiversity/a/elbigiddim.xyz

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn_diversity": 2,
                "host": "elbigiddim.xyz",
                "ip_diversity_all": 2,
                "ip_diversity_groups": 2
            }
        ]
    }
}

Tip

Example timeline:

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/ipdiversity/a/elbigiddim?timeline=1
{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn_diversity": 2,
                "host": "elbigiddim.xyz",
                "ip_diversity_all": 2,
                "ip_diversity_groups": 2,
                "timeline": [
                    {
                        "asn": "28753",
                        "asname": "LEASEWEB-DE-FRA-10, DE",
                        "first_seen": "2021-07-06 18:06:58",
                        "ip": "5.61.43.191",
                        "last_seen": "2021-07-10 17:58:31"
                    },
                    {
                        "asn": "202015",
                        "asname": "HZ-US-AS, BG",
                        "first_seen": "2021-07-03 14:31:37",
                        "ip": "79.141.163.35",
                        "last_seen": "2021-07-05 14:56:16"
                    }
                ]
            }
        ]
    }
}

search ipdiversity patterns

GET /explore/padns/search/ipdiversity

Search for IP Diversity patterns, with optional name server and domain name pattern matching

Query Parameters
  • nsname =<name|pattern|self> (string) (optional) –

    • name server name or wildcard pattern of name server used by domains

      • use nsname=self to find domains hosting their own nameservers

  • domain =<name|pattern> (string) (optional) –

    • name or wildcard pattern of domain names to search for

  • domain_regex =<pattern> (pattern) (optional) –

    • re2 regular expression - overrides domain parameter

      • pattern must be a valid re2 regular expression

  • mxname =<name|pattern|self> (string) (optional) –

    • mx server name or wildcard pattern of mx server used by domains

      • use mxname=self to find domains hosting their own mailservers

  • asn_diversity =<n> (int) (optional) –

    • asn diversity - exact match

  • asn_diversity_min =<n> (int) (optional) –

    • minimum diversity limit

  • asn_diversity_max =<n> (int) (optional) –

    • maximum diversity limit

  • ip_diversity_all =<n> (int) (optional) –

    • ip diversity all - exact match

  • ip_diversity_all_min =<n> (int) (optional) –

    • minimum diversity limit

  • ip_diversity_all_max =<n> (int) (optional) –

    • maximum diversity limit

  • ip_diversity_groups =<n> (int) (optional) –

    • ip diversity groups - exact match

  • ip_diversity_groups_min =<n> (int) (optional) –

    • minimum diversity limit

  • ip_diversity_groups_max =<n> (int) (optional) –

    • maximum diversity limit

  • first_seen_min =<yyyy-mm-dd> (string) (optional) –

    • only domains that have A records seen for the first time after the given date

  • first_seen_max =<yyyy-mm-dd> (string) (optional) –

    • only domains that have A records seen for the first time before the given date

  • first_seen_min_mode =<strict|any> (string) (optional) –

    • match mode for first_seen_min parameter

      • strict (default) - select A records that do not have any timestamps before first_seen_min

      • any - select A records that have at least one timestamp after first_seen_min

  • first_seen_max_mode =<strict|any> (string) (optional) –

    • match mode for first_seen_max parameter

      • strict (default) - select A records that do not have any timestamps after first_seen_max

      • any - select A records that have at least one timestamp before first_seen_max

  • last_seen_min =<yyyy-mm-dd> (string) (optional) –

    • only domains that have A records last seen more recently than the given date

  • last_seen_max =<yyyy-mm-dd> (string) (optional) –

    • only domains that have A records last seen earlier than the given date

  • last_seen_min_mode =<strict|any> (string) (optional) –

    • match mode for last_seen_min parameter

      • strict - select A records that do not have any timestamps before last_seen_min

      • any (default) - select A records that have at least one timestamp after first_seen_min

  • last_seen_max_mode =<strict|any> (string) (optional) –

    • match mode for last_seen_max parameter

      • strict (default) - select A records that do not have any timestamps after last_seen_max

      • any - select A records that have at least one timestamp before last_seen_max

  • asnum =<n> (int) (optional) –

    • AS number to search, may be repeated multiple time for additional AS numbers

  • asn =<in|notin> (int) (optional) –

    • search for IP addresses in or not in the given AS numbers

      • default = in

  • asname =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_starts_with =<name> (string) (optional) –

    • search all AS numbers where the AS Name begins with <name>

  • asname_contains =<name> (string) (optional) –

    • search all AS numbers where the AS Name contains <name>

  • asn_match =<type> (string) (optional) –

    • how to match AS numbers

      • any (default) - match on any asnum given or derived from asname

      • all - asn diversity timeline must contain all asnums given as asnum parameter or derived from asname

      • limit - apply min and/or max limits as specified by optional asn_match_min and asn_match_max parameters

  • asn_match_max =<n> (int) (optional) –

    • maximum <n> of the asnums given as asnum or derived from asname must appear in asn diversity timeline

  • asn_match_min =<n> (int) (optional) –

    • minimum <n> of the asnums given as asnum or derived from asname must appear in asn diversity timeline

  • network =<subnet> (string) (optional) –

    • additional network and net mask

      • give option as 1.1.1.1/24

      • network parameter may be given multiple times and the search will be performed as an ‘or’ condition

  • timeline =<0|1> (int) (optional) –

    • include details of IPs, ASNs, first_seen and last_seen for each domain

      • 0 (default) = do not include

      • 1 = include timeline

  • first_seen_after =<yyyy-mm-dd> (string) (optional) –

    • only domains that have been seen using the NS server in the “nsname=” parameter for the first time after the given date

  • first_seen_before =<yyyy-mm-dd> (string) (optional) –

    • only domains that have been seen using the NS server in the “nsname=” parameter for the first time before the given date

  • registrar =<name> (string) (optional) –

    • name or partial name of registrar used to register domains - no wildcards, the given string is used in partial match - this is a slow search option and should only be used in combination with the domain match option

  • email =<email> (string) (optional) –

    • email used to register domains - no wildcards, the given string is used in exact match - this is a slow search option and should only be used in combination with the domain match option

  • whois_date_after =<yyyy-mm-dd> (string) (optional) –

    • only domains that have a created date in Whois after this date – this limits the search to domains for which we have Whois data and makes the search perform slowly – all of the whois specific options should be avoided if at all possible

  • nschange_from_ns =<name|pattern|self> (string) (optional) –

    • domain has changed name server from nsname

    • exact match, wildcards and ‘self’ options supported

  • nschange_to_ns =<name|pattern|self> (string) (optional) –

    • domain has changed name server to nsname

    • exact match, wildcards and ‘self’ options supported

  • nschange_date_after =<yyyy-mm-dd> (string) (optional) –

    • only domains with name server changes that occurred after the given date

    • if nschange_date_after is not given, the default is to find name server changes in the last 30 days, if nschange_date_before is not given

  • nschange_date_before =<yyyy-mm-dd> (string) (optional) –

    • only domains with name server changes that occurred before the given date

  • cert_date_min =<yyyy-mm-dd> (string) (optional) –

    • only domains that have had ssl certificates issued on or after the given date

  • cert_date_max =<yyyy-mm-dd> (string) (optional) –

    • only domains that have had ssl certificates issued on or before the given date

  • cert_issuer =<name|pattern> (string) (optional) –

    • only domains that have had ssl certificates issued using the named certificate issuer

      • wildcards (*) are supported

      • spaces in name may be represented by ‘+’

  • infratag =<infratag> (string) (optional) –

    • search by infratag

      • infratag must include mx part, ns part, asname part, or registrar part

      • overrides mxname, nsname and registrar parameters, if infratag contains these parts

      • can be combined with all other parameters

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

At least one of the following optional parameters is required:

  • asn_diversity

  • asn_diversity_min

  • asn_diversity_max

  • ip_diversity_all

  • ip_diversity_all_min

  • ip_diversity_all_max

  • ip_diversity_groups

  • ip_diversity_groups_min

  • ip_diversity_groups_max

Warning

The registrar option is a slow search option and should only be used in combination with the domain match option

Warning

The whois_date_after option limits the search to domains for which we have Whois data and makes the search perform slowly

Warning

All of the whois specific options should be avoided if at all possible

  • registrar

  • whois_date_after

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/search/ipdiversity \
     ?nsname=*.bodis.com \
     &asn_diversity_min=5 \
     &limit=3

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn_diversity": 5,
                "host": "089.org",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3
            },
            {
                "asn_diversity": 5,
                "host": "6645.org",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3
            },
            {
                "asn_diversity": 5,
                "host": "aerialbytes.com",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3
            }
        ]
    }
}

Tip

Example timeline:

https://api.silentpush.com/api/v1/merge-api/explore/padns/search/ipdiversity \
    ?nsname=*.bodis.com \
    &asn_diversity_min=5 \
    &limit=3 \
    &timeline=1
{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn_diversity": 5,
                "host": "089.org",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3,
                "timeline": [
                    {
                        "asn": 3842,
                        "first_seen": "2021-06-23 15:00:05",
                        "ip": "107.161.23.204",
                        "last_seen": "2021-06-26 13:25:30"
                    },
                    {
                        "asn": 8100,
                        "first_seen": "2021-06-23 15:00:05",
                        "ip": "192.161.187.200",
                        "last_seen": "2021-06-26 13:25:30"
                    },
                    {
                        "asn": 53667,
                        "first_seen": "2021-06-23 15:00:05",
                        "ip": "209.141.38.71",
                        "last_seen": "2021-06-26 13:25:30"
                    },
                    {
                        "asn": 395082,
                        "first_seen": "2021-06-28 22:20:59",
                        "ip": "199.59.242.153",
                        "last_seen": "2021-07-09 15:04:46"
                    },
                    {
                        "asn": 16509,
                        "first_seen": "2021-03-10 17:07:19",
                        "ip": "52.58.78.16",
                        "last_seen": "2021-06-21 13:19:25"
                    }
                ]
            },
            {
                "asn_diversity": 5,
                "host": "6645.org",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3,
                "timeline": [
                    {
                        "asn": 3842,
                        "first_seen": "2020-12-23 14:02:19",
                        "ip": "107.161.23.204",
                        "last_seen": "2021-06-26 16:52:24"
                    },
                    {
                        "asn": 16509,
                        "first_seen": "2021-05-22 11:35:33",
                        "ip": "99.81.40.78",
                        "last_seen": "2021-06-21 17:28:31"
                    },
                    {
                        "asn": 395082,
                        "first_seen": "2021-06-27 13:52:52",
                        "ip": "199.59.242.153",
                        "last_seen": "2021-07-09 14:02:15"
                    },
                    {
                        "asn": 53667,
                        "first_seen": "2020-12-23 14:02:19",
                        "ip": "209.141.38.71",
                        "last_seen": "2021-06-26 16:52:24"
                    },
                    {
                        "asn": 8100,
                        "first_seen": "2020-12-23 14:02:19",
                        "ip": "192.161.187.200",
                        "last_seen": "2021-06-26 16:52:24"
                    }
                ]
            },
            {
                "asn_diversity": 5,
                "host": "aerialbytes.com",
                "ip_diversity_all": 5,
                "ip_diversity_groups": 3,
                "timeline": [
                    {
                        "asn": 19994,
                        "first_seen": "2020-12-28 17:30:52",
                        "ip": "23.253.58.227",
                        "last_seen": "2021-06-11 12:34:58"
                    },
                    {
                        "asn": 395082,
                        "first_seen": "2021-07-09 11:10:00",
                        "ip": "199.59.242.153",
                        "last_seen": "2021-07-09 11:10:00"
                    },
                    {
                        "asn": 16509,
                        "first_seen": "2020-12-28 17:30:52",
                        "ip": "176.34.241.253",
                        "last_seen": "2021-06-11 12:34:58"
                    },
                    {
                        "asn": 33070,
                        "first_seen": "2020-12-28 17:30:52",
                        "ip": "162.242.150.89",
                        "last_seen": "2021-06-11 12:34:58"
                    },
                    {
                        "asn": 19324,
                        "first_seen": "2021-06-12 11:35:27",
                        "ip": "52.128.23.27",
                        "last_seen": "2021-07-07 16:14:05"
                    }
                ]
            }
        ]
    }
}

search self-hosted domains

GET /explore/padns/search/selfhosted/{qtype}

Search self-hosted domains, i.e. NS servers are in the queried domain and hosted on the same IP as the domain A record (where A records have been seen as active within the last 30 days)

Query Parameters
  • qtype (string) (required) –

    • record type to search

    • the following qtypes are supported:

      • ns

  • domain =<name|pattern> (string) (optional) –

    • name or wildcard pattern of domain names to search for

  • regex =<pattern> (pattern) (optional) –

    • re2 regular expression

      • pattern must be a valid re2 regular expression

  • domain_asnum =<n> (int) (optional) –

    • AS number of domain A records to search, may be repeated multiple time for additional AS numbers

  • nssrv_asnum =<n> (int) (optional) –

    • AS number of name server A records to search, may be repeated multiple time for additional AS numbers

  • asn =<in|notin> (int) (optional) –

    • search for IP addresses in or not in the given AS numbers

      • default = in

  • asname =<name> (string) (optional) –

    • search for domain and name server A records in all AS numbers where the AS Name begins with <name>, may be repeated multiple time for additional AS names

  • asname_starts_with =<name> (string) (optional) –

    • search for domain and name server A records in all AS numbers where the AS Name begins with <name>, may be repeated multiple time for additional AS names

  • asname_contains =<name> (string) (optional) –

    • search for domain and name server A records in all AS numbers where the AS Name contains <name>, may be repeated multiple time for additional AS names

  • asn_match =<type> (string) (optional) –

    • how to match AS numbers

      • any (default) - match on any asnum given or derived from asname

      • all - asn diversity timeline must contain all asnums given as asnum parameter or derived from asname

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Note

AS numbers derived from asname, asname_starts_with and asname_contains parameters will be appended to the AS numbers given as domain_asnum and nssrv_asnum parameters - i.e. asname, asname_starts_with and asname_contains are appended to both the domain_asnum and nssrv_asnum lists

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/search/selfhosted/ns \
     ?asname=uunet \
     &asn=notin \
     &domain=sil* \
     &limit=3

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
        {
            "domain": "sil-core.com",
            "domain_asns": {
                "394695": "PUBLIC-DOMAIN-REGISTRY, US"
            },
            "domain_ips": [
                "199.79.62.211"
            ],
            "nssrv": [
                "ns.sil-core.com"
            ],
            "nssrv_asns": {
                "394695": "PUBLIC-DOMAIN-REGISTRY, US"
            },
            "nssrv_ips": [
                "199.79.62.211"
            ]
        },
        {
            "domain": "sil-more.com",
            "domain_asns": {
                "3462": "HINET Data Communication Business Group, TW"
            },
            "domain_ips": [
                "220.130.141.85"
            ],
            "nssrv": [
                "dns2.sil-more.com",
                "dns1.sil-more.com"
            ],
            "nssrv_asns": {
                "3462": "HINET Data Communication Business Group, TW"
            },
            "nssrv_ips": [
                "220.128.102.156",
                "220.130.141.85"
            ]
        },
        {
            "domain": "sil-tec.gr",
            "domain_asns": {
                "3329": "HOL-GR Athens, Greece, GR"
            },
            "domain_ips": [
                "91.138.180.85"
            ],
            "nssrv": [
                "ns1.sil-tec.gr",
                "ns3.sil-tec.gr"
            ],
            "nssrv_asns": {
                "3329": "HOL-GR Athens, Greece, GR",
                "55405": "EXABYTES-AS-AP Exa Bytes Network Sdn.Bhd., MY"
            },
            "nssrv_ips": [
                "91.138.180.85",
                "202.157.182.142"
            ]
        }
        ]
    }
}

search SOA records

GET /explore/padns/search/soa

Search SOA records - search by individual components of the SOA record

  • the following record components are searchable:

    • domain

    • ns

    • mbox

    • serial

    • refresh

    • retry

    • expire

    • min_ttl

Query Parameters
  • domain =<name|pattern> (string) (optional) –

    • name or wildcard pattern of domain names to search for

  • regex =<pattern> (pattern) (optional) –

    • re2 regular expression - may be used for complex matching on domain names

    • overrides domain parameter

      • pattern must be a valid re2 regular expression

  • ns =<name|pattern|self> (string) (optional) –

    • name or wildcard pattern of ns component

      • self - only show results where domain of ns component matches name of the record’s domain

  • mbox =<name|pattern|self> (string) (optional) –

    • name or wildcard pattern of mbox component

      • self - only show results where domain of mbox component matches name of the record’s domain

  • serial =<n> (int) (optional) –

    • serial number - exact match

  • serial_min =<n> (int) (optional) –

    • serial number - minimum value of serial number

  • serial_max =<n> (int) (optional) –

    • serial number - maximum value of serial number

  • refresh =<n> (int) (optional) –

    • refresh value - exact match

  • refresh_min =<n> (int) (optional) –

    • refresh value - minimum value of refresh

  • refresh_max =<n> (int) (optional) –

    • refresh value - maximum value of refresh

  • retry =<n> (int) (optional) –

    • retry value - exact match

  • retry_min =<n> (int) (optional) –

    • retry value - minimum value of retry

  • retry_max =<n> (int) (optional) –

    • retry value - maximum value of retry

  • expire =<n> (int) (optional) –

    • expire value - exact match

  • expire_min =<n> (int) (optional) –

    • expire value - minimum value of expire

  • expire_max =<n> (int) (optional) –

    • expire value - maximum value of expire

  • min_tll =<n> (int) (optional) –

    • min_ttl value - exact match

  • min_ttl_min =<n> (int) (optional) –

    • min_ttl value - minimum value of min_ttl

  • min_ttl_max =<n> (int) (optional) –

    • min_ttl value - maximum value of min_ttl

  • first_seen_after =<date|epoch|sec|period> (optional) –

    • first_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • first_seen_before =<date|epoch|se|periodc> (optional) –

    • first_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_after =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or after this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • last_seen_before =<date|epoch|sec|period> (optional) –

    • last_seen timestamp must be on or before this time

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • as_of =<date|epoch|sec|period> (optional) –

    • only return records where the as_of timestamp equivalent is between the first_seen and the last_seen timestamp

      • date: yyyy-mm-dd (2021-07-09) - fixed date

      • epoch: number (1625834953) - fixed time in epoch format

      • sec: negative number (-172800) - relative time <sec> seconds ago

      • time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time <nX> ago

        • h : hours

        • d : days

        • w : weeks

        • m : months

  • sort =<sort/order> (optional) –

    • order results in specified order - parameter may be repeated with different column names to produce a nested sorting effect

      • sort:

        • last_seen/last/time_last - synonyms for last_seen column

        • first_seen/first/time_first - synonyms for first_seen column

        • query/rrname - synonyms for query column

        • answer/rdata - synonyms for answer_seen column

      • order:

        • asc/+/up - synonyms for ascending order

        • desc/-/down - synonyms for descending order

  • output_format =<padns|cof> (optional) –

    • padns (default) - Silent Push padns output format

    • cof - common output format

  • limit =<n> (int) (optional) –

    • number of results to return

      • default = 100

  • skip =<n> (int) (optional) –

    • number of results to skip

  • limit_by_n =<n> (int) (optional) –

    • number of results to return for each domain

      • should be used in combination with the sort option to order results by domain name:

        • sort=query/asc&limit_by_n=<n>

        • sort=query/desc&limit_by_n=<n>

  • prefer =<result|job_id> (string) (optional) –

    • result (default) - return results if available before max_wait timeout, otherwise return job_id

    • job_id - return job_id immediately

  • max_wait =<n> (int) (optional) –

    • number of seconds to wait for results before returning job_id

      • default = 25

      • value in the range from 0 to 25

  • with_metadata =<0|1> (int) (optional) –

    • include metadata object in response : returned results, total results, job_id

      • 0 (default) = do not include

      • 1 = include metadata

Request Headers
  • X-API-KEYapi-key

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/search/soa \
     ?ns=self \
     &mbox=self \
     &refresh_max=3600 \
     &as_of=2021-09-05 \
     &sort=query/asc \
     &limit_by_n=1 \
     &limit=3

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "answer": "0-0.tokyo postmaster.0-0.tokyo 1628480066 3600 1800 604800 3600",
                "count": 22,
                "first_seen": "2021-08-16 14:16:16",
                "last_seen": "2021-09-11 15:33:34",
                "query": "0-0.tokyo",
                "soahash": "9368183172799169125",
                "type": "SOA"
            },
            {
                "answer": "0-00.jp postmaster.0-00.jp 1578118944 3600 1800 604800 3600",
                "count": 21,
                "first_seen": "2021-08-15 19:31:47",
                "last_seen": "2021-09-09 21:19:44",
                "query": "0-00.jp",
                "soahash": "5082557450419466557",
                "type": "SOA"
            },
            {
                "answer": "0-0b.com postmaster.0-0b.com 1523681376 3600 1800 604800 3600",
                "count": 23,
                "first_seen": "2021-08-16 11:00:49",
                "last_seen": "2021-09-09 11:00:56",
                "query": "0-0b.com",
                "soahash": "2864770382402869468",
                "type": "SOA"
            }
        ]
    }
}

ASNs seen for domain

GET /explore/padns/lookup/domain/asns/{domain}

Show ASNs that have been used by A records for a domain within the last 30 days, includes subdomains

Query Parameters
  • domain (string) (required) –

    • name of domain to search for

  • result_format (string) (optional) –

    • format of returned results

      • compact (default) = return ASN and AS Name only

      • full = return details of domain hosts in each ASN

Request Headers
  • X-API-KEYapi-key

Example Request

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/domain/asns/example.com

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "domain": "example.com",
                "domain_asns": {
                    "15133": "EDGECAST, US"
                }
            }
        ]
    }
}

Example Request with detailed response

https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/domain/asns/example.com?result_format=full

Example Response

{
    "status_code": 200,
    "error": null,
    "response": {
        "records": [
            {
                "asn": 15133,
                "asn_size": 134400,
                "asname": "EDGECAST, US",
                "domain_hosts_in_asn": 2
            }
        ]
    }
}