########### PADNS ########### ***************** PADNS endpoints ***************** These endpoints return Passive DNS data forward PADNS lookup =============================== .. http:get:: /explore/padns/lookup/query/{qtype}/{qname} :noindex: Forward lookup of Passive DNS data :query *required* **qtype** (string): * the following qypes are supported: * a * aaaa * cname * mx * ns * ptr4 * ptr6 * any * anyipv4 * anyipv6 * soa * txt :query *required* **qname** (string): * specify a name or IP address to lookup * name - wildcards (\*) are supported in name string * IPv4 * IPv6 :query optional **netmask** = (int): * net mask may be given for qtypes ptr4 or ptr6 * defaults: IPv4 = 32, IPv6 = 128 :query optional **subdomains** = (int): * include or exclude subdomains from qtype a or aaaa results * 0 = exclude * 1 = include :query optional **regex** = (pattern): * re2 regular expression * pattern must be a valid re2 regular expression :query optional **match** = (string): * 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 :query optional **first_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **first_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **as_of** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **sort** =: * 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 :query optional **output_format** =: * padns (default) - Silent Push padns output format * cof - common output format :query *optional* **limit** = (*int*): * number of results to return * default = 100 :query *optional* **skip** = (*int*): * number of results to skip :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-key` .. note:: Wildcards (\*) are supported in qname .. sourcecode:: bash 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: .. sourcecode:: bash 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** .. sourcecode:: bash 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** .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/lookup/answer/{qtype}/{qname} :noindex: Reverse lookup of Passive DNS data :query *required* **qtype** (string): * the following qypes are supported: * a * aaaa * cname * mx * ns * ptr4 * ptr6 * soa * txt * mxhash * nshash * soahash * txthash :query *required* **qname** (string): * specify a name or IP address to lookup * name - wildcards (\*) are supported in name string * IPv4 * IPv6 :query optional **netmask** = (int): * net mask may be given for qtypes a or aaaa * defaults: IPv4 = 32, IPv6 = 128 :query optional **subdomains** = (int): * include or exclude subdomains from qtype a or aaaa results * 0 = exclude * 1 = include :query optional **regex** = (pattern): * re2 regular expression * pattern must be a valid re2 regular expression :query optional **first_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **first_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **as_of** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **sort** =: * 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 :query optional **output_format** =: * padns (default) - Silent Push padns output format * cof - common output format :query *optional* **limit** = (*int*): * number of results to return * default = 100 :query *optional* **skip** = (*int*): * number of results to skip :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-key` .. note:: Wildcards (\*) are supported in qname .. sourcecode:: bash 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 .. sourcecode:: bash 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 .. sourcecode:: bash 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 .. sourcecode:: bash 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 .. sourcecode:: bash 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: .. sourcecode:: bash 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** .. sourcecode:: bash 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** .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/lookup/both/{qtype}/{qname}/{qanswer} :noindex: Search passive DNS data for records of where query is and answer is - wildcards are supported in both qname and qanswer :query *required* **qtype** (string): * the following qypes are supported: * a * aaaa * cname * mx * ns * ptr4 * ptr6 :query *required* **qname** (string): * specify a name or IP address to lookup * name - wildcards (\*) are supported in name string * IPv4 * IPv6 :query *required* **qanswer** (string): * specify a name or IP address to lookup * name - wildcards (\*) are supported in name string * IPv4 * IPv6 :query optional **match** = (string): * find records where query = and answer equal or not equal to * eq (default) - answer must match * neq - answer must not match :query optional **name** = (string): * additional name to match qanswer * up to 5 additional names may be given - wildcards are supported :query optional **netmask** = (int): * net mask may be given for qtypes a or aaaa * use to find records in the same subnet * defaults: IPv4 = 32, IPv6 = 128 :query optional **net** = (string): * 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 :query optional **network** = (string): * additional network and net mask * give option as 1.1.1.1/24 * up to 5 additional networks may be given :query optional **asnum** = (int): * 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 :query optional **asn** = (string): * 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 :query *optional* **asname** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_starts_with** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_contains** = (string): * search all AS numbers where the AS Name contains :query optional **first_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **first_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **as_of** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **sort** =: * 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 :query optional **output_format** =: * padns (default) - Silent Push padns output format * cof - common output format :query *optional* **limit** = (*int*): * number of results to return * default = 100 :query *optional* **skip** = (*int*): * number of results to skip :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-key` .. note:: Wildcards (\*) are supported in qname and qanswer .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/both/ns/sil*push.*/*.ns.cloudflare.com **Example Request** .. sourcecode:: bash 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** .. sourcecode:: json { "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: .. sourcecode:: bash 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 .. sourcecode:: json { "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 ===================================== .. http:get:: /explore/padns/lookup/uld/{qtype}/{qname}/{qanswer} :noindex: 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 *required* **qtype** (string): * the following qypes are supported: * a * aaaa :query *required* **qname** (string): * specify a name to lookup * name - wildcards (\*) are required in name string * _ - use underscore as placeholder if regex is given :query optional **regex** = (pattern): * re2 regular expression * pattern must be a valid re2 regular expression * regex overrides any qname given :query *required* **qanswer** (string): * 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 :query optional **nsname** = (string): * 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 :query optional **match** = (string): * 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 :query optional **netmask** = (int): * 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 :query optional **net** = (string): * 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 :query optional **network** = (string): * additional network and net mask * give option as 1.1.1.1/24 * up to 5 additional networks may be given :query optional **asnum** = (int): * 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 :query optional **asn** = (string): * 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 :query *optional* **asname** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_starts_with** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_contains** = (string): * search all AS numbers where the AS Name contains :query *optional* **reduce** = (string): * 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 :query optional **first_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **first_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **as_of** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **sort** =: * 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 :query optional **output_format** =: * padns (default) - Silent Push padns output format * cof - common output format :query *optional* **limit** = (*int*): * number of results to return * default = 100 :query *optional* **skip** = (*int*): * number of results to skip :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-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** .. sourcecode:: bash 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** .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/lookup/translate/{qtype}/{query} :noindex: Show server names that belong to an nshash or mxhash :query *required* **qtype** (string): * the following qypes are supported: * nshash * mxhash :query *required* **query** (string): * specify a hash value to translate * nshash or mxhash :requestheader X-API-KEY: `api-key` **Example Request** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/translate/nshash/850c47a684c9ea9c32ece18e7be4cddc **Example Response** .. sourcecode:: json { "status_code": 200, "error": null, "response": { "records": [ { "nshash": "850c47a684c9ea9c32ece18e7be4cddc" }, [ { "nssrv": "henry.ns.cloudflare.com" }, { "nssrv": "vida.ns.cloudflare.com" } ] ] } } density lookup =============================== .. http:get:: /explore/padns/lookup/density/{qtype}/{query} :noindex: Get density (number of domains) for qtype :query *required* **qtype** (string): * the following qypes are supported: * nssrv * mxsrv * nshash * mxhash * ipv4 * ipv6 * asn :query *required* **query** (string): * specify a value to lookup * name of NS or MX server * hash of NS or MX server * IPv4 or IPv6 address * AS number :query *optional* **scope** (string): * 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}) :requestheader X-API-KEY: `api-key` **Example Request** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/density/nssrv/vida.ns.cloudflare.com **Example Response** .. sourcecode:: json { "status_code": 200, "error": null, "response": { "records": [ { "density": 64082, "nssrv": "vida.ns.cloudflare.com" } ] } } .. tip:: Example subnet scope from IPv4 address: .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/density/ipv4/1.1.1.1?scope=subnet .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/lookup/ipdiversity/{qtype}/{query} :noindex: Get ip diversity (number of ip addresses pointed to over time) for query of qtype :query *required* **qtype** (string): * the following qypes are supported: * a * aaaa :query *required* **query** (string): * specify a value to lookup * name of A or AAAA record :query optional **window** = (int): * use records with a last_seen more recently than days ago * default = 30 :query optional **asn** =<0|1> (int): * include asn diversity * 0 = do not include * 1 (default) = include asn diversity :query optional **timeline** =<0|1> (int): * include timeline of {ip, first_seen, last_seen} (+asn if asn=1) * 0 (default) = do not include * 1 = include timeline :query optional **verbose** =<0|1> (int): * return ips, dates, timeline, (and asns if asn=1) * 0 (default) = do not include * 1 = include all data :query *optional* **scope** (string): * 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 :requestheader X-API-KEY: `api-key` **Example Request** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/ipdiversity/a/elbigiddim.xyz **Example Response** .. sourcecode:: json { "status_code": 200, "error": null, "response": { "records": [ { "asn_diversity": 2, "host": "elbigiddim.xyz", "ip_diversity_all": 2, "ip_diversity_groups": 2 } ] } } .. tip:: Example timeline: .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/ipdiversity/a/elbigiddim?timeline=1 .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/search/ipdiversity :noindex: Search for IP Diversity patterns, with optional name server and domain name pattern matching :query *optional* **nsname** = (string): * name server name or wildcard pattern of name server used by domains * use nsname=self to find domains hosting their own nameservers :query *optional* **domain** = (string): * name or wildcard pattern of domain names to search for :query optional **domain_regex** = (pattern): * re2 regular expression - overrides domain parameter * pattern must be a valid re2 regular expression :query *optional* **mxname** = (string): * mx server name or wildcard pattern of mx server used by domains * use mxname=self to find domains hosting their own mailservers :query *optional* **asn_diversity** = (int): * asn diversity - exact match :query *optional* **asn_diversity_min** = (int): * minimum diversity limit :query *optional* **asn_diversity_max** = (int): * maximum diversity limit :query *optional* **ip_diversity_all** = (int): * ip diversity all - exact match :query *optional* **ip_diversity_all_min** = (int): * minimum diversity limit :query *optional* **ip_diversity_all_max** = (int): * maximum diversity limit :query *optional* **ip_diversity_groups** = (int): * ip diversity groups - exact match :query *optional* **ip_diversity_groups_min** = (int): * minimum diversity limit :query *optional* **ip_diversity_groups_max** = (int): * maximum diversity limit :query optional **first_seen_min** = (string): * only domains that have A records seen for the first time after the given date :query optional **first_seen_max** = (string): * only domains that have A records seen for the first time before the given date :query optional **first_seen_min_mode** = (string): * 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 :query optional **first_seen_max_mode** = (string): * 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 :query optional **last_seen_min** = (string): * only domains that have A records last seen more recently than the given date :query optional **last_seen_max** = (string): * only domains that have A records last seen earlier than the given date :query optional **last_seen_min_mode** = (string): * 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 :query optional **last_seen_max_mode** = (string): * 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 :query *optional* **asnum** = (int): * AS number to search, may be repeated multiple time for additional AS numbers :query *optional* **asn** = (int): * search for IP addresses in or not in the given AS numbers * default = in :query *optional* **asname** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_starts_with** = (string): * search all AS numbers where the AS Name begins with :query *optional* **asname_contains** = (string): * search all AS numbers where the AS Name contains :query *optional* **asn_match** = (string): * 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 :query *optional* **asn_match_max** = (int): * maximum of the asnums given as asnum or derived from asname must appear in asn diversity timeline :query *optional* **asn_match_min** = (int): * minimum of the asnums given as asnum or derived from asname must appear in asn diversity timeline :query optional **network** = (string): * 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 :query optional **timeline** =<0|1> (int): * include details of IPs, ASNs, first_seen and last_seen for each domain * 0 (default) = do not include * 1 = include timeline :query optional **first_seen_after** = (string): * only domains that have been seen using the NS server in the "nsname=" parameter for the first time after the given date :query optional **first_seen_before** = (string): * only domains that have been seen using the NS server in the "nsname=" parameter for the first time before the given date :query optional **registrar** = (string): * 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 :query optional **email** = (string): * 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 :query optional **whois_date_after** = (string): * 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 :query optional **nschange_from_ns** = (string): * domain has changed name server from nsname * exact match, wildcards and ‘self’ options supported :query optional **nschange_to_ns** = (string): * domain has changed name server to nsname * exact match, wildcards and ‘self’ options supported :query optional **nschange_date_after** = (string): * 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 :query optional **nschange_date_before** = (string): * only domains with name server changes that occurred before the given date :query optional **cert_date_min** = (string): * only domains that have had ssl certificates issued on or after the given date :query optional **cert_date_max** = (string): * only domains that have had ssl certificates issued on or before the given date :query optional **cert_issuer** = (string): * only domains that have had ssl certificates issued using the named certificate issuer * wildcards (*) are supported * spaces in name may be represented by '+' :query optional **infratag** = (string): * 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 :query optional **limit** = (int): * number of results to return * default = 100 :query optional **skip** = (int): * number of results to skip :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-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** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/search/ipdiversity \ ?nsname=*.bodis.com \ &asn_diversity_min=5 \ &limit=3 **Example Response** .. sourcecode:: json { "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: .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/search/ipdiversity \ ?nsname=*.bodis.com \ &asn_diversity_min=5 \ &limit=3 \ &timeline=1 .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/search/selfhosted/{qtype} :noindex: 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 *required* **qtype** (string): * record type to search * the following qtypes are supported: * ns :query *optional* **domain** = (string): * name or wildcard pattern of domain names to search for :query optional **regex** = (pattern): * re2 regular expression * pattern must be a valid re2 regular expression :query *optional* **domain_asnum** = (int): * AS number of domain A records to search, may be repeated multiple time for additional AS numbers :query *optional* **nssrv_asnum** = (int): * AS number of name server A records to search, may be repeated multiple time for additional AS numbers :query *optional* **asn** = (int): * search for IP addresses in or not in the given AS numbers * default = in :query *optional* **asname** = (string): * search for domain and name server A records in all AS numbers where the AS Name begins with , may be repeated multiple time for additional AS names :query *optional* **asname_starts_with** = (string): * search for domain and name server A records in all AS numbers where the AS Name begins with , may be repeated multiple time for additional AS names :query *optional* **asname_contains** = (string): * search for domain and name server A records in all AS numbers where the AS Name contains , may be repeated multiple time for additional AS names :query *optional* **asn_match** = (string): * 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 :query optional **limit** = (int): * number of results to return * default = 100 :query optional **skip** = (int): * number of results to skip :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-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** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/search/selfhosted/ns \ ?asname=uunet \ &asn=notin \ &domain=sil* \ &limit=3 **Example Response** .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/search/soa :noindex: 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 *optional* **domain** = (string): * name or wildcard pattern of domain names to search for :query optional **regex** = (pattern): * re2 regular expression - may be used for complex matching on domain names * overrides domain parameter * pattern must be a valid re2 regular expression :query optional **ns** = (string): * name or wildcard pattern of ns component * self - only show results where domain of ns component matches name of the record's domain :query optional **mbox** = (string): * name or wildcard pattern of mbox component * self - only show results where domain of mbox component matches name of the record's domain :query optional **serial** = (int): * serial number - exact match :query optional **serial_min** = (int): * serial number - minimum value of serial number :query optional **serial_max** = (int): * serial number - maximum value of serial number :query optional **refresh** = (int): * refresh value - exact match :query optional **refresh_min** = (int): * refresh value - minimum value of refresh :query optional **refresh_max** = (int): * refresh value - maximum value of refresh :query optional **retry** = (int): * retry value - exact match :query optional **retry_min** = (int): * retry value - minimum value of retry :query optional **retry_max** = (int): * retry value - maximum value of retry :query optional **expire** = (int): * expire value - exact match :query optional **expire_min** = (int): * expire value - minimum value of expire :query optional **expire_max** = (int): * expire value - maximum value of expire :query optional **min_tll** = (int): * min_ttl value - exact match :query optional **min_ttl_min** = (int): * min_ttl value - minimum value of min_ttl :query optional **min_ttl_max** = (int): * min_ttl value - maximum value of min_ttl :query optional **first_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **first_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_after** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **last_seen_before** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **as_of** =: * 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 seconds ago * time period: negative number with time period (-36h / -5d / -3w / -6m) - relative time ago * h : hours * d : days * w : weeks * m : months :query optional **sort** =: * 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 :query optional **output_format** =: * padns (default) - Silent Push padns output format * cof - common output format :query *optional* **limit** = (*int*): * number of results to return * default = 100 :query *optional* **skip** = (*int*): * number of results to skip :query *optional* **limit_by_n** = (*int*): * 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= * sort=query/desc&limit_by_n= :query *optional* **prefer** = (*string*): * result (default) - return results if available before max_wait timeout, otherwise return job_id * job_id - return job_id immediately :query *optional* **max_wait** = (*int*): * number of seconds to wait for results before returning job_id * default = 25 * value in the range from 0 to 25 :query *optional* **with_metadata** =<0|1> (int): * include metadata object in response : returned results, total results, job_id * 0 (default) = do not include * 1 = include metadata :requestheader X-API-KEY: `api-key` **Example Request** .. sourcecode:: bash 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** .. sourcecode:: json { "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 =============================== .. http:get:: /explore/padns/lookup/domain/asns/{domain} :noindex: Show ASNs that have been used by A records for a domain within the last 30 days, includes subdomains :query *required* **domain** (string): * name of domain to search for :query *optional* **result_format** (string): * format of returned results * compact (default) = return ASN and AS Name only * full = return details of domain hosts in each ASN :requestheader X-API-KEY: `api-key` **Example Request** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/domain/asns/example.com **Example Response** .. sourcecode:: json { "status_code": 200, "error": null, "response": { "records": [ { "domain": "example.com", "domain_asns": { "15133": "EDGECAST, US" } } ] } } **Example Request with detailed response** .. sourcecode:: bash https://api.silentpush.com/api/v1/merge-api/explore/padns/lookup/domain/asns/example.com?result_format=full **Example Response** .. sourcecode:: json { "status_code": 200, "error": null, "response": { "records": [ { "asn": 15133, "asn_size": 134400, "asname": "EDGECAST, US", "domain_hosts_in_asn": 2 } ] } }