Server Status API
A free, keyless REST API for programmatically checking the status of a Minecraft server and getting information on any public minecraft server in real time. Responses are cached at the edge for 2 minutes. No authentication required.
How to Use
- 1Get your server address. This can be a domain name like hypixel.net or an IP with a port like 192.168.1.1:25565. Port is optional and defaults to 25565 for Java or 19132 for Bedrock.
- 2Send a GET request to https://minecraftpinger.com/api/v1/<host>:<port> with a User-Agent header identifying your app.
- 3Read the JSON response. If the mc server status is online, the server object contains player count, MOTD, version, ping, and more. If offline, server is null.
Endpoint
GET https://minecraftpinger.com/api/v1/<host>:<port>Port is optional and defaults to 25565 (Java) or 19132 (Bedrock). Both Java Edition and Bedrock Edition servers are supported.
Required Header
User-Agent: your-app/1.0All requests must include a User-Agent header identifying your application. This lets us understand how the API is being used and helps us contact you if something goes wrong. Requests without a User-Agent are rejected with a 400 response.
Code Examples
curl
curl -H "User-Agent: my-app/1.0" https://minecraftpinger.com/api/v1/hypixel.netJavaScript (fetch)
const res = await fetch('https://minecraftpinger.com/api/v1/hypixel.net', {
headers: { 'User-Agent': 'my-app/1.0' }
})
const data = await res.json()
// data.server is null if the server is offline
console.log(data.server?.players.online)Python
import requests
r = requests.get(
'https://minecraftpinger.com/api/v1/hypixel.net',
headers={'User-Agent': 'my-app/1.0'}
)
data = r.json()
# data['server'] is None if the server is offline
print(data['server']['players']['online'])Response
Online server
{
"message": "ok",
"server": {
"ip": "hypixel.net",
"port": 25565,
"players": {
"online": 52847,
"max": 200000
},
"motd": "Hypixel Network [1.8-1.21]",
"version": "Requires MC 1.8 / 1.21",
"ping": 23,
"edition": "java",
"favicon": "data:image/png;base64,..."
}
}Offline or unreachable server
{
"message": "ok",
"server": null
}| Field | Type | Description |
|---|---|---|
| ip | string | Resolved hostname or IP |
| port | number | Port used |
| players.online | number | Current player count |
| players.max | number | Maximum player slots |
| motd | string | Message of the Day (plain text) |
| version | string | Server version string |
| ping | number | Round-trip latency in milliseconds |
| edition | string | "java" or "bedrock" |
| favicon | string | null | Base64-encoded PNG server icon (Java only) |
Caching
Responses are cached at the CDN edge for 2 minutes. Repeated requests for the same server within that window return the cached result instantly without hitting the origin. You can check the CF-Cache-Status response header to see whether a response was served from cache (HIT) or freshly fetched (MISS).
Frequently Asked Questions
Yes. The API is completely free. No account, credit card, or API key is required. Simply send a GET request with a User-Agent header and you will receive the mc server status instantly.
No API key is required. The only requirement is a User-Agent header that identifies your application. This helps us understand usage patterns and reach out if anything looks wrong.
There is no published per-user rate limit. Responses for each server are cached at the CDN edge for 2 minutes, so repeated requests for the same server within that window return instantly without hitting the origin. Reasonable polling (once every few minutes) is perfectly fine.
Yes. The API automatically detects whether a server is Java or Bedrock Edition and uses the correct protocol. Bedrock servers typically run on port 19132. You can also check Java Edition servers on port 25565 (the default).
A null server field means the server is offline or unreachable. This could be because the server is down, the address is incorrect, or a firewall is blocking the connection. An online server returns a full object with player count, MOTD, version, and more.
Yes. Because responses are cached at the edge for 2 minutes, polling every few minutes is efficient and will not overload the origin. The CF-Cache-Status response header tells you whether the result came from cache (HIT) or was freshly fetched (MISS).
Built by MinecraftPinger.com
