DNSfish API · v1
The DNS API for ops, monitors, and CI.
Same engine as the UI, exposed as JSON, JSONP, and DNS-over-HTTPS. No auth for <1,000 req/day. No rate-limit pages. No tracking.
GET
/v1/lookup/:domain200 OK · 38ms p50Returns every record type for a domain, queried against your selected resolver. Pass ?types=A,MX,TXT to limit.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
| domain | string | — | Required. The hostname to look up. |
| types | string[] | all | Comma-separated list. e.g. A,AAAA,MX |
| resolver | string | cloudflare | One of cloudflare, google, quad9, opendns, auth |
| trace | bool | false | Include full recursive trace from root. |
Example request
cURL
$ curl "https://api.dnsfish.com/v1/lookup/github.com" \
-H "Accept: application/json"
Response
application/json200 OK
{
"domain": "github.com",
"resolver": "cloudflare",
"queried_at": "2026-05-24T18:42:11Z",
"latency_ms": 38,
"dnssec": { "signed": false, "reason": "no DS at parent" },
"answers": {
"A": [{ "value": "140.82.114.4", "ttl": 60 }],
"MX": [{ "priority": 1, "value": "aspmx.l.google.com." }, /* 4 more */]
}
}
SDK snippets
JavaScript
import { dnsfish } from "dnsfish"
const r = await dnsfish.lookup("github.com")
console.log(r.answers.A)
Python
import dnsfish
r = dnsfish.lookup("github.com")
print(r.answers["A"])
Go
client := dnsfish.New("")
r, _ := client.Lookup("github.com")
fmt.Println(r.Answers.A)
Shell
$ dnsfish lookup github.com --type mx
1 aspmx.l.google.com.
5 alt1.aspmx.l.google.com.