Skip to main content

Port Number & Service Lookup API

REAL DATA

Look up which service IANA registered for a TCP/UDP port, or search services by name — the complete registry for ports 0-49151, verbatim with every reference.

Authoritative reference data or standards computation

Base URL
/api/ports
Capabilities
2 routes
Last updated
July 29, 2026
Data source

GET /api/ports

Every filter genuinely narrows the rows; combined filters are ANDed. Results stay in registry order (ascending port), and count caps them — on this route it defaults to 20, not to all matches. No match returns an empty list plus a warning, never a substituted row; when the window falls inside a port-range row the warning names the block. A range assignment (assignedRange set) matches a port window whenever the window overlaps its span.

Live requestRuns against the public API
No key required
GET/api/ports?portFrom=8080&portTo=8080

Request parameters

Lowest port number to include (inclusive). Must be ≤ portTo when both are given.

Highest port number to include (inclusive).

Keep only registrations for this transport protocol. Rows the registry leaves without a protocol never match.

Exact registered service name, matched case-insensitively (`XmlIpcRegSvc` = `xmlipcregsvc`). Use `search` for partial matches.

Case-insensitive substring match against the service name and the registry description. Does not search notes or references.

`system` = the Well Known Ports 0-1023; `registered` = the User Ports 1024-49151 (RFC 6335 §6). Both ranges ship complete.

Advanced response options6 options

Limit the number of returned records (1–100). Defaults to 20.

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/ports?portFrom=8080&portTo=8080"
const res = await fetch("https://randomapi.dev/api/ports?portFrom=8080&portTo=8080");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/ports?portFrom=8080&portTo=8080").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/ports?portFrom=8080&portTo=8080"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 6
portFrom int

Lowest port number to include (inclusive). Must be ≤ portTo when both are given.

allowed: 0 – 65535
example: portFrom=8000
portTo int

Highest port number to include (inclusive).

allowed: 0 – 65535
example: portTo=8999
protocol enum

Keep only registrations for this transport protocol. Rows the registry leaves without a protocol never match.

allowed: tcp | udp | sctp | dccp
example: protocol=tcp
service string

Exact registered service name, matched case-insensitively (`XmlIpcRegSvc` = `xmlipcregsvc`). Use `search` for partial matches.

allowed: 1 – 64
example: service=mysql
search string

Case-insensitive substring match against the service name and the registry description. Does not search notes or references.

allowed: 1 – 64
example: search=database
range enum

`system` = the Well Known Ports 0-1023; `registered` = the User Ports 1024-49151 (RFC 6335 §6). Both ranges ship complete.

allowed: system | registered
example: range=system
Universal parameters Shared response and formatting options 6
count int

Limit the number of returned records (1–100). Defaults to 20.

default: 20
allowed: 1 – 100
example: count=3
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=port,protocol
exclude list

Return all fields except these (comma-separated).

example: exclude=unauthorizedUse
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 10
port integer (0-65535)

Assigned port number. For the eight rows IANA publishes as a port RANGE rather than a single port, this is the first port of the span and `assignedRange` states the span.

example: 22

protocol string nullable

Transport protocol of this registration: tcp, udp, sctp or dccp. Null when the registry row carries no protocol (some Unassigned/De-registered single ports).

example: tcp

serviceName string nullable

IANA service name, exactly as registered. Null wherever the registry publishes no name: mostly Reserved and Unassigned rows, but also the legacy `any private …` entries (24, 35, 57, 59, 75, 77, 87), De-registered/Removed rows and the odd anecdotal one (1008, "Possibly used by Sun Solaris????"). Pre-RFC-6335 names may contain characters RFC 6335 §5.1 now forbids (`mdbs_daemon`, `sql*net`).

example: ssh

description string nullable

The registry's Description cell, copied verbatim — terse, occasionally stale and sometimes duplicated across rows. Null when the cell is blank.

example: The Secure Shell (SSH) Protocol

registrationDate string (YYYY-MM or YYYY-MM-DD) nullable

Date IANA records for the assignment, in whichever precision the registry publishes. Null for the many older rows that carry none, and for every port-range row (the registry dates none of them).

example: 2015-04-23

reference string nullable

The row's own Reference cell in IANA's bracketed form, e.g. `[RFC4251]` or `[RFC3501][RFC8314][RFC9051]`. Null when the registry cites nothing.

example: [RFC4251]

range string

`system` for 0-1023 (Well Known Ports) or `registered` for 1024-49151 (User Ports), per RFC 6335 §6.

example: system

assignedRange string (from-to) nullable

Null for the per-port rows that make up all but eight registrations. The exceptions are the spans IANA assigns as one row — `x11` on `6000-6063`, `flex-lm` on `27000-27009`, `swx` on `7300-7359`, `vrml-multi-use` on `4200-4299`, `ircu` on `6665-6669`, `active-net` on `3322-3325`, `satvid-datalnk` on `3367-3371` — where this states the span instead of us inventing a row per port.

example: null

note string nullable

The registry's Assignment Notes cell verbatim — de-assignment history, replacement names and DNS-SD guidance. Null when empty.

example: Defined TXT keys: u=<username> p=<password>

unauthorizedUse string nullable

The registry's own Unauthorized Use Reported cell verbatim: IANA's note that software squats on this port. Null when IANA reports none — it is not a claim about what is actually running.

example: PORT 90 also being used unofficially by Pointcast

Documented examples

Build-generated requests and complete responses
5
What is registered on port 8080?
GET /api/ports?portFrom=8080&portTo=8080
{
  "data": [
    {
      "port": 8080,
      "protocol": "tcp",
      "serviceName": "http-alt",
      "description": "HTTP Alternate (see port 80)",
      "registrationDate": null,
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 8080,
      "protocol": "udp",
      "serviceName": "http-alt",
      "description": "HTTP Alternate (see port 80)",
      "registrationDate": null,
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    }
  ],
  "meta": {
    "endpoint": "ports",
    "count": 2,
    "params": {
      "portFrom": 8080,
      "portTo": 8080
    },
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
Every registration for the redis service
GET /api/ports?service=redis
{
  "data": [
    {
      "port": 6379,
      "protocol": "tcp",
      "serviceName": "redis",
      "description": "An advanced key-value cache and store",
      "registrationDate": "2015-04-23",
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    }
  ],
  "meta": {
    "endpoint": "ports",
    "count": 1,
    "params": {
      "service": "redis"
    },
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
Database ports across the User range
GET /api/ports?range=registered&search=database&count=50
{
  "data": [
    {
      "port": 1201,
      "protocol": "tcp",
      "serviceName": "nucleus-sand",
      "description": "Nucleus Sand Database Server",
      "registrationDate": null,
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 1201,
      "protocol": "udp",
      "serviceName": "nucleus-sand",
      "description": "Nucleus Sand Database Server",
      "registrationDate": null,
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 1388,
      "protocol": "tcp",
      "serviceName": "objective-dbc",
      "description": "Objective Solutions DataBase Cache",
      "registrationDate": null,
      "reference": null,
      "range": "registered",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 1388,
    …
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
SCTP registrations in the System range
GET /api/ports?range=system&protocol=sctp&count=30
{
  "data": [
    {
      "port": 9,
      "protocol": "sctp",
      "serviceName": "discard",
      "description": "Discard",
      "registrationDate": null,
      "reference": "[RFC9260]",
      "range": "system",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 20,
      "protocol": "sctp",
      "serviceName": "ftp-data",
      "description": "FTP",
      "registrationDate": null,
      "reference": "[RFC9260]",
      "range": "system",
      "assignedRange": null,
      "note": null,
      "unauthorizedUse": null
    },
    {
      "port": 21,
      "protocol": "sctp",
      "serviceName": "ftp",
      "description": "FTP",
      "registrationDate": null,
      "reference": "[RFC9260]",
      "range": "system",
      "assignedRange": null,
      "note": "Defined TXT keys: u=<username> p=<password> path=<path>",
      "unauthorizedUse": null
    },
    {
      "port": 22,
    …
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
Ports 0-60 as CSV
GET /api/ports?portFrom=0&portTo=60&count=100&format=csv
port,protocol,serviceName,description,registrationDate,reference,range,assignedRange,note,unauthorizedUse
0,tcp,,Reserved,,[RFC6335],system,,,
0,udp,,Reserved,,[RFC6335],system,,,
1,tcp,tcpmux,TCP Port Service Multiplexer,,,system,,,
1,udp,tcpmux,TCP Port Service Multiplexer,,,system,,,
2,tcp,,Reserved,,,system,,"De-assigned on 2025-02-13, previously compressnet by [Bernie_Volz]",
2,udp,,Reserved,,,system,,"De-assigned on 2025-02-13, previously compressnet by [Bernie_Volz]",
3,tcp,,Reserved,,,system,,"De-assigned on 2025-02-13, previously compressnet by [Bernie_Volz]",
3,udp,,Reserved,,,system,,"De-assigned on 2025-02-13, previously compressnet by [Bernie_Volz]",
4,tcp,,Unassigned,,,system,,,
4,udp,,Unassigned,,,system,,,
5,tcp,rje,Remote Job Entry,,,system,,,
5,udp,rje,Remote Job Entry,,,system,,,
6,tcp,,Unassigned,,,system,,,
6,udp,,Unassigned,,,system,,,
7,tcp,echo,Echo,,,system,,,
7,udp,echo,Echo,,,system,,,
8,tcp,,Unassigned,,,system,,,
8,udp,,Unassigned,,,system,,,
9,tcp,discard,Discard,,,system,,,
9,udp,discard,Discard,,,system,,,
9,sctp,discard,Discard,,[RFC9260],system,,,
9,dccp,discard,Discard,,[RFC4340],system,,,
10,tcp,,Unassigned,,,system,,,
10,udp,,Unassigned,,,system,,,
11,tcp,systat,Active Users,,,system,,,
11,udp,systat,Active Users,,,system,,,
12,tcp,,Unassigned,,,system,,,
12,udp,,Unassigned,,,system,,,
13,tcp,daytime,Daytime,,[RFC867],system,,,
13,udp,daytime,Daytime,,[RFC867],system,,,
14,tcp,,Unassigned,,,system,,,
14,udp,,Unassigned,,,system,,,
15,tcp,,Unassigned [was netstat],,,system,,,
15,udp,,Unassigned,,,system,,,
16,tcp,,Unassigned,,,system,,,
16,udp,,Unassigned,,,system,,,
17,tcp,qotd,Quote of the Day,,,system,,,
17,udp,qotd,Quote of the Day,,,system,,,
18,tcp,msp,Message Send Protocol (historic),,,system,,,
    …
45,udp,mpm,Message Processing Module [recv],,,system,,,
46,tcp,mpm-snd,MPM [default send],,,system,,,

GET /api/ports/lookup

Give exactly one of port or name. Either way you get the whole registrations[] array rather than one row, because most ports carry several and picking one would silently hide the rest. Both directions are complete: a port lookup returns every row IANA holds for that number (including the range assignment covering it, if that is how the registry files it), and a name lookup returns every port that name holds anywhere in 0-49151.

Live requestRuns against the public API
No key required
GET/api/ports/lookup?port=22

Request parameters

Port number to look up. Mutually exclusive with `name`; outside 0-65535 is a 400.

Registered service name to look up, matched case-insensitively. Mutually exclusive with `port`.

Narrow the returned registrations to one transport protocol. A port with no row for it answers 404 listing the protocols it does have.

Advanced response options4 options

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/ports/lookup?port=22"
const res = await fetch("https://randomapi.dev/api/ports/lookup?port=22");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/ports/lookup?port=22").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/ports/lookup?port=22"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 3
port int

Port number to look up. Mutually exclusive with `name`; outside 0-65535 is a 400.

allowed: 0 – 65535
example: port=22
name string

Registered service name to look up, matched case-insensitively. Mutually exclusive with `port`.

allowed: 1 – 64
example: name=ssh
protocol enum

Narrow the returned registrations to one transport protocol. A port with no row for it answers 404 listing the protocols it does have.

allowed: tcp | udp | sctp | dccp
example: protocol=tcp
Universal parameters Shared response and formatting options 4
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=port,name
exclude list

Return all fields except these (comma-separated).

example: exclude=registrations
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 6
port integer (0-65535) nullable

The port that was looked up; null when the lookup was by service name.

example: 22

name string nullable

The service name that was looked up, in the registry's own spelling; null when the lookup was by port.

example: null

protocol string nullable

The transport protocol filter that was applied, or null when none was.

example: null

ports integer[]

Distinct `port` values across the returned registrations, ascending. For a range assignment that is the first port of the span, not every port it covers.

example: [22]

registrationCount integer

Number of entries in `registrations` — 1 or more, since a miss is a 404.

example: 3

registrations object[]

Every matching row this API ships, in registry order, each with the same fields as the list route.

example: [{"port":22,"protocol":"tcp","serviceName":"ssh","description":"The Secure Shell (SSH) Protocol","registrationDate":null,"reference":"[RFC4251]","range":"system","assignedRange":null,"note":"Defined TXT keys: u=<username> p=<password>","unauthorizedUse":null}]

Documented examples

Build-generated requests and complete responses
5
What is port 22?
GET /api/ports/lookup?port=22
{
  "data": {
    "port": 22,
    "name": null,
    "protocol": null,
    "ports": [
      22
    ],
    "registrationCount": 3,
    "registrations": [
      {
        "port": 22,
        "protocol": "tcp",
        "serviceName": "ssh",
        "description": "The Secure Shell (SSH) Protocol",
        "registrationDate": null,
        "reference": "[RFC4251]",
        "range": "system",
        "assignedRange": null,
        "note": "Defined TXT keys: u=<username> p=<password>",
        "unauthorizedUse": null
      },
      {
        "port": 22,
        "protocol": "udp",
        "serviceName": "ssh",
        "description": "The Secure Shell (SSH) Protocol",
        "registrationDate": null,
        "reference": "[RFC4251]",
        "range": "system",
        "assignedRange": null,
        "note": "Defined TXT keys: u=<username> p=<password>",
        "unauthorizedUse": null
      },
      {
        "port": 22,
        "protocol": "sctp",
        "serviceName": "ssh",
        "description": "SSH",
        "registrationDate": null,
    …
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
What port does Redis use?
GET /api/ports/lookup?name=redis
{
  "data": {
    "port": null,
    "name": "redis",
    "protocol": null,
    "ports": [
      6379
    ],
    "registrationCount": 1,
    "registrations": [
      {
        "port": 6379,
        "protocol": "tcp",
        "serviceName": "redis",
        "description": "An advanced key-value cache and store",
        "registrationDate": "2015-04-23",
        "reference": null,
        "range": "registered",
        "assignedRange": null,
        "note": null,
        "unauthorizedUse": null
      }
    ]
  },
  "meta": {
    "endpoint": "ports",
    "route": "/lookup",
    "params": {
      "name": "redis"
    },
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
Only the TCP registration on 443
GET /api/ports/lookup?port=443&protocol=tcp
{
  "data": {
    "port": 443,
    "name": null,
    "protocol": "tcp",
    "ports": [
      443
    ],
    "registrationCount": 1,
    "registrations": [
      {
        "port": 443,
        "protocol": "tcp",
        "serviceName": "https",
        "description": "http protocol over TLS/SSL",
        "registrationDate": null,
        "reference": "[RFC9110]",
        "range": "system",
        "assignedRange": null,
        "note": null,
        "unauthorizedUse": null
      }
    ]
  },
  "meta": {
    "endpoint": "ports",
    "route": "/lookup",
    "params": {
      "port": 443,
      "protocol": "tcp"
    },
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
All seven registrations on port 80
GET /api/ports/lookup?port=80
{
  "data": {
    "port": 80,
    "name": null,
    "protocol": null,
    "ports": [
      80
    ],
    "registrationCount": 7,
    "registrations": [
      {
        "port": 80,
        "protocol": "tcp",
        "serviceName": "http",
        "description": "World Wide Web HTTP",
        "registrationDate": null,
        "reference": "[RFC9110]",
        "range": "system",
        "assignedRange": null,
        "note": "Defined TXT keys: u=<username> p=<password> path=<path to document>",
        "unauthorizedUse": null
      },
      {
        "port": 80,
        "protocol": "udp",
        "serviceName": "http",
        "description": "World Wide Web HTTP",
        "registrationDate": null,
        "reference": "[RFC9110]",
        "range": "system",
        "assignedRange": null,
        "note": "Defined TXT keys: u=<username> p=<password> path=<path to document>",
        "unauthorizedUse": null
      },
      {
        "port": 80,
        "protocol": "tcp",
        "serviceName": "www",
        "description": "World Wide Web HTTP",
        "registrationDate": null,
    …
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}
Port 6000, which IANA assigns as the x11 range
GET /api/ports/lookup?port=6000
{
  "data": {
    "port": 6000,
    "name": null,
    "protocol": null,
    "ports": [
      6000
    ],
    "registrationCount": 2,
    "registrations": [
      {
        "port": 6000,
        "protocol": "tcp",
        "serviceName": "x11",
        "description": "X Window System",
        "registrationDate": null,
        "reference": null,
        "range": "registered",
        "assignedRange": "6000-6063",
        "note": null,
        "unauthorizedUse": "Known Unauthorized Use on port 6003"
      },
      {
        "port": 6000,
        "protocol": "udp",
        "serviceName": "x11",
        "description": "X Window System",
        "registrationDate": null,
        "reference": null,
        "range": "registered",
        "assignedRange": "6000-6063",
        "note": null,
        "unauthorizedUse": "Known Unauthorized Use on port 6003"
      }
    ]
  },
  "meta": {
    "endpoint": "ports",
    "route": "/lookup",
    "params": {
    …
    "generatedAt": "2026-07-29T08:14:14.000Z"
  }
}

About this API

Coverage & behavior

Answers "what is port 5432?" and "what port does Redis use?" straight from a pinned snapshot of the IANA Service Name and Transport Protocol Port Number Registry (updated 2026-07-23).

Scope — the whole assigned port space. RFC 6335 §6 splits 0-65535 into System Ports (0-1023), User a.k.a. Registered Ports (1024-49151) and Dynamic/Private ports (49152-65535), and IANA assigns nothing in the last one. This API ships every row the registry publishes for the first two:

  • 1,518 individual System-Port registrations covering all 1024 ports 0-1023, and
  • 11,179 individual User-Port registrations across the 48,128 ports 1024-49151,
  • plus the 766 port-range rows IANA publishes instead of per-port entries (mostly Unassigned spans such as 225-241, but 8 of them are real named assignments — x11 owns 6000-6063 and flex-lm owns 27000-27009, and those come back as registrations carrying assignedRange).

Individual rows and range rows together account for every port from 0 to 49151 with no gaps, asserted port by port by scripts/refresh-ports.mjs against the SHA-pinned upstream CSV. Out of the registry's 14,529 rows, the only ones missing here are the 1,066 that register a service name with no port number at all (legacy protocol names like arp, bootp and egp) — a port lookup cannot express those, and the 404 for one says so rather than pretending the name is unregistered.

So a 404 is informative, not a hedge: either the port sits in a range row the registry publishes as a block (the 404 names the block), or it is in the Dynamic/Private range that RFC 6335 §6 sets aside and IANA never assigns.

The registry is not a port scan. A registration says IANA assigned a name to a number; it says nothing about what is listening on your host. This endpoint performs no scanning of any kind.

Registrations ≠ real-world usage. Registry text is copied verbatim — never tidied — and famous developer ports frequently belong to something else entirely: 3000 is hbci and remoteware-cl, 9092 is XmlIpcRegSvc, 9200 is wap-wsp, 2181 is eforward, 5601 is esmagent, and OTLP's HTTP port 4318 is still Unassigned. We ship what IANA registered. The only de-facto signal here is IANA's own unauthorizedUse cell, reproduced verbatim; we never invent one.

One port, many registrations. /lookup always returns a registrations[] array because most ports carry several rows — 22 is registered for tcp, udp and sctp, 80 carries seven rows across http, www and www-http, and a name can span both ranges (epp holds 700 and 3044). Picking one would be silently wrong.

Use it for

  • Answer 'what is this port?' from a firewall log or netstat output without opening the 1.1 MB IANA CSV
  • Resolve a service name to every port IANA assigned it, across both RFC 6335 ranges
  • Check whether a System Port (0-1023) you want to bind is already assigned, and to which transport protocols
  • Export any window of the registry as JSON, NDJSON or CSV to build a port picker or documentation table

Frequently asked questions

What is port 22 and what is port 443?

/api/ports/lookup?port=22 returns three IANA registrations for ssh — tcp, udp and sctp — the tcp row described as "The Secure Shell (SSH) Protocol" citing [RFC4251]. Port 443 is https, described as "http protocol over TLS/SSL" on tcp and udp, and registered for sctp as well.

What port does MySQL, PostgreSQL, Redis or MongoDB use?

3306 is mysql, 5432 is postgresql ("PostgreSQL Database"), 6379 is redis and 27017 is mongodb. Ask from either side: /api/ports/lookup?port=6379 or /api/ports/lookup?name=redis.

Why does port 8080 come back as http-alt?

Because that is the actual IANA registration: http-alt, described as "HTTP Alternate (see port 80)", registered for both tcp and udp. We report the registry, not whichever application happens to bind 8080 on your machine.

Why is port 3000 registered to hbci and 9092 to XmlIpcRegSvc?

Those are the genuine assignments; the developer conventions (Node dev servers, Kafka brokers) were never registered. This API never presents de-facto usage as registry data — the closest thing is IANA's own unauthorizedUse cell, reproduced verbatim where present.

Does this API include every port in the IANA registry?

Yes for every port IANA assigns: all 1,518 System-range rows (0-1023), all 11,179 User-range rows (1024-49151) and all 766 port-range rows — 13,463 of the 14,529 rows in the registry CSV. The remaining 1,066 register a service name with no port number at all, which a port lookup cannot express, and ports 49152-65535 are Dynamic/Private, which IANA never assigns.

Does a port lookup tell me whether something is listening on my machine?

No. This is a registry reference, not a scanner — it never contacts your host or any other. A registration only records the name IANA assigned to a number.

Standards & references