Beeping Beeping

API Documentation

About this API

Beeping is a RESTful API designed with simplicity in mind. Every endpoint serves both HTML (for humans) and JSON (for machines) depending on the Accept header you send.

There's no separate /api prefix — the same URLs work for both browser visits and API calls. This keeps the architecture clean and predictable.

This service is free and open for everyone to use. However, please be respectful: avoid excessive request rates that could impact service availability for others. If you need high-volume access, consider caching responses or reach out to discuss options.

💡 How to use the API

For JSON responses: Add the header Accept: application/json

For HTML pages: Use Accept: text/html or just visit the URL in your browser

API Endpoints

Back to Menu

GET /

Detects client IP address and returns complete information including geolocation and ASN data.

Headers

  • Accept: application/json - Returns JSON response
  • Accept: text/html - Returns HTML page (default)

Example Request

curl -H "Accept: application/json" https://beeping.app/

Example Response

{
  "ip": "64.81.161.249",
  "version": 4,
  "type": "global",
  "geo": {
    "country": {
      "code": "ES",
      "name": "Spain"
    },
    "city": "Madrid",
    "location": {
      "latitude": 40.4165,
      "longitude": -3.70256
    }
  },
  "asn": {
    "asn": 15704,
    "organization": "XTRA TELECOM S.A.",
    "network_type": "isp"
  }
}
Back to Menu

GET /tools/ip-analyzer/{ip}

Analyzes a specific IP address and returns detailed information about its properties and classification.

Parameters

  • ip - IPv4 or IPv6 address to analyze

Example Request

curl -H "Accept: application/json" https://beeping.app/tools/ip-analyzer/8.8.8.8

Example Response

{
  "ip": "8.8.8.8",
  "version": "IPv4",
  "is_ipv4": true,
  "is_ipv6": false,
  "is_loopback": false,
  "is_private": false,
  "is_global": true,
  "is_multicast": false,
  "is_broadcast": false,
  "is_documentation": false,
  "is_unspecified": false,
  "is_reserved": false,
  "ip_class": "A",
  "cidr_notation": "8.8.8.8/32",
  "default_mask": "255.0.0.0",
  "network_type": "Global (Public)"
}
Back to Menu

GET /tools/geo/lookup/{ip}

Looks up geographic information for a specific IP address including country, city, and location coordinates.

Parameters

  • ip - IPv4 or IPv6 address to lookup

Example Request

curl -H "Accept: application/json" https://beeping.app/tools/geo/lookup/8.8.8.8

Example Response

{
  "ip": "8.8.8.8",
  "geo": {
    "country": {
      "code": "US",
      "name": "United States"
    },
    "city": "Mountain View",
    "location": {
      "latitude": 37.419,
      "longitude": -122.057
    }
  }
}

Use Cases

  • Content localization based on visitor location
  • Security monitoring and fraud detection
  • Analytics and traffic analysis
  • Geographic access restrictions
Back to Menu

GET /tools/asn/lookup/{ip}

Looks up ASN information for a specific IP address including ASN number, organization and network type.

Parameters

  • ip - IPv4 or IPv6 address to lookup

Example Request

curl -H "Accept: application/json" https://beeping.app/tools/asn/lookup/8.8.8.8

Example Response

{
  "ip": "8.8.8.8",
  "asn": {
    "asn": 15169,
    "organization": "GOOGLE",
    "network_type": "hosting"
  }
}

Use Cases

  • Identify hosting providers vs ISPs
  • Security and threat attribution
  • Traffic analysis and routing decisions
Back to Menu

GET /tools/dns/lookup/{domain}

Performs DNS record lookup for a domain name.

Parameters

  • domain - Domain name to lookup (path parameter)

Query Parameters

  • record_type - Record type: A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, CAA, SRV (optional, default: A)

Example Request

curl "https://beeping.app/tools/dns/lookup/google.com?record_type=A"

Example Response

{
  "domain": "google.com",
  "record_type": "A",
  "records": [
    "142.250.179.110"
  ],
  "ttl": 300,
  "query_time_ms": 11
}
Back to Menu

GET /tools/dns/propagation/{domain}

Checks DNS propagation across 21 global DNS servers.

Parameters

  • domain - Domain name to check (path parameter)

Query Parameters

  • record_type - Record type: A, AAAA, MX, TXT, CNAME, NS, SOA, PTR, CAA, SRV (optional, default: A)

Example Request

curl "https://beeping.app/tools/dns/propagation/google.com?record_type=A"

Example Response

[
  {
    "server": {
      "name": "Cloudflare",
      "location": "San Francisco, CA",
      "country": "USA",
      "ip": "1.1.1.1",
      "latitude": 37.775,
      "longitude": -122.419
    },
    "status": "propagated",
    "records": [
      "142.251.39.206"
    ],
    "error_message": null
  },
  {
    "server": {
      "name": "Google Public DNS",
      "location": "Mountain View, CA",
      "country": "USA",
      "ip": "8.8.8.8",
      "latitude": 37.419,
      "longitude": -122.057
    },
    "status": "propagated",
    "records": [
      "142.250.179.110"
    ],
    "error_message": null
  },
  {
    "server": {
      "name": "OpenDNS",
      "location": "San Jose, CA",
      "country": "USA",
      "ip": "208.67.222.222",
      "latitude": 37.339,
      "longitude": -121.895
    },
    "status": "error",
    "records": [],
    "error_message": "no record found for Query { name: Name(\"google.com.\"), query_type: A, query_class: IN }"
  }
]
Back to Menu

GET /tools/ping/{target}

Tests network connectivity and latency to a target IP address or hostname. Returns RTT statistics, packet loss, jitter, OS detection from TTL, and connection quality metrics.

Parameters

  • target - IP address or hostname to ping (path parameter)

Query Parameters

  • count - Number of ping attempts (1-10, default: 4)
  • method - Ping method: 'tcp' or 'http' (default: tcp)

Example Request

curl "https://beeping.app/tools/ping/8.8.8.8?count=4&method=tcp"

Example Response

{
  "target": "8.8.8.8",
  "resolved_ip": "8.8.8.8",
  "method": "tcp",
  "packets_sent": 4,
  "packets_received": 4,
  "packet_loss_percent": 0.0,
  "rtt_min_ms": 12.34,
  "rtt_avg_ms": 14.56,
  "rtt_max_ms": 16.78,
  "jitter_ms": 1.23,
  "ttl": 58,
  "os_detection": {
    "likely_os": "Linux/Unix",
    "confidence": 0.85,
    "ttl_expected": 64,
    "ttl_hops": 6
  },
  "connection_quality": {
    "score": 94,
    "rating": "Excellent",
    "is_stable": true,
    "jitter_rating": "Excellent"
  },
  "geo_analysis": {
    "distance_km": null,
    "expected_latency_ms": null,
    "latency_anomaly": false,
    "anomaly_score": 1.0
  },
  "timestamp": "2025-11-21T10:30:00Z"
}

Response Fields

  • rtt_min/avg/max_ms - Round-trip time statistics in milliseconds
  • jitter_ms - Average latency variation between pings
  • ttl - Time-To-Live value observed (used for OS detection)
  • os_detection.likely_os - Detected operating system (Linux/Unix, Windows, Network Device)
  • os_detection.confidence - Detection confidence (0.0-1.0)
  • os_detection.ttl_hops - Estimated number of network hops
  • connection_quality.score - Overall quality score (0-100)
  • connection_quality.rating - Excellent, Good, Fair, or Poor
  • geo_analysis.latency_anomaly - True if latency is unexpectedly high for distance

Notes

  • TCP method connects to port 80 or 443 (HTTPS fallback)
  • HTTP method sends a HEAD request to the target
  • TTL-based OS detection is heuristic and may not be 100% accurate
  • Jitter <5ms is excellent, 5-15ms is good, 15-30ms is fair, >30ms is poor
  • Quality score considers latency, jitter, and packet loss
Back to Menu

GET /tools/subnet/{cidr}

Calculates subnet information from CIDR notation including network address, broadcast address, subnet mask, wildcard mask, and usable host range.

Parameters

  • cidr - IP address with prefix length (e.g., 192.168.1.0/24)

Example Request

curl -H "Accept: application/json" https://beeping.app/tools/subnet/192.168.1.0/24

Example Response

{
  "input": "192.168.1.0/24",
  "ip_address": "192.168.1.0",
  "network_address": "192.168.1.0",
  "broadcast_address": "192.168.1.255",
  "subnet_mask": "255.255.255.0",
  "wildcard_mask": "0.0.0.255",
  "cidr_notation": "192.168.1.0/24",
  "prefix_length": 24,
  "total_hosts": 256,
  "usable_hosts": 254,
  "first_usable": "192.168.1.1",
  "last_usable": "192.168.1.254",
  "ip_class": "C",
  "is_private": true
}

Use Cases

  • Network planning and subnetting
  • Firewall rule configuration
  • IP address range allocation
  • Network documentation
Back to Menu

GET /tools/traceroute/{target}

Traces the network path to a target IP address or hostname. Discovers all routers (hops) between the server and the destination, measuring latency at each step.

Parameters

  • target - IP address or hostname to trace (path parameter)

Query Parameters

  • max_hops - Maximum number of hops to trace (1-64, default: 30, optional)
  • probes_per_hop - Number of probes to send per hop (1-10, default: 3, optional)
  • timeout_ms - Timeout per probe in milliseconds (100-30000, default: 5000, optional)

Example Request

# Basic request with defaults
curl "https://beeping.app/tools/traceroute/8.8.8.8"

# Custom parameters
curl "https://beeping.app/tools/traceroute/google.com?max_hops=20&probes_per_hop=5&timeout_ms=3000"

Example Response

{
  "target": "8.8.8.8",
  "resolved_ip": "8.8.8.8",
  "hops": [
    {
      "hop": 1,
      "ip": "192.168.1.1",
      "hostname": "router.local",
      "probes": [
        {"rtt_ms": 1.234, "responder_ip": "192.168.1.1"},
        {"rtt_ms": 1.156, "responder_ip": "192.168.1.1"},
        {"rtt_ms": 1.298, "responder_ip": "192.168.1.1"}
      ],
      "avg_rtt_ms": 1.229,
      "min_rtt_ms": 1.156,
      "max_rtt_ms": 1.298,
      "rtt_bar_width": 0,
      "is_destination": false
    },
    {
      "hop": 2,
      "ip": "10.0.0.1",
      "hostname": "isp-gateway.example.com",
      "probes": [
        {"rtt_ms": 15.432, "responder_ip": "10.0.0.1"},
        {"rtt_ms": 15.678, "responder_ip": "10.0.0.1"},
        {"rtt_ms": 15.234, "responder_ip": "10.0.0.1"}
      ],
      "avg_rtt_ms": 15.448,
      "min_rtt_ms": 15.234,
      "max_rtt_ms": 15.678,
      "rtt_bar_width": 7,
      "is_destination": false
    },
    {
      "hop": 3,
      "ip": null,
      "hostname": null,
      "probes": [
        {"rtt_ms": null, "responder_ip": null},
        {"rtt_ms": null, "responder_ip": null},
        {"rtt_ms": null, "responder_ip": null}
      ],
      "avg_rtt_ms": null,
      "min_rtt_ms": null,
      "max_rtt_ms": null,
      "rtt_bar_width": 0,
      "is_destination": false
    }
  ],
  "destination_reached": false,
  "total_hops": null,
  "responsive_hops": 2,
  "timeout_hops": 1,
  "timestamp": 1700000000000
}

Response Fields

  • hops - Array of network hops from source to destination
  • hop - Hop number (TTL value used)
  • ip - IP address of the router at this hop (null if timeout)
  • hostname - Reverse DNS hostname of the router (if available)
  • probes - Results from 3 probe attempts per hop
  • avg_rtt_ms - Average round-trip time for successful probes
  • destination_reached - Whether the target destination was reached
  • total_hops - Number of hops to destination (if reached)
  • responsive_hops - Count of hops that responded
  • timeout_hops - Count of hops that timed out

Notes

  • Uses ICMP packets with incrementing TTL values to discover routes
  • Some routers may not respond to traceroute probes (shown as null/timeout)
  • Traceroute stops after 3 consecutive timeouts or reaching max_hops
  • Reverse DNS lookups are performed asynchronously for each hop
  • Default values can be configured via environment variables (BEEPING_TRACEROUTE_*)
  • Query parameters override server defaults if provided
  • All parameters are validated and clamped to safe limits
  • Requires CAP_NET_RAW capability on the server

Use Cases

  • Network troubleshooting and path analysis
  • Identifying routing issues or bottlenecks
  • Measuring per-hop latency increases
  • Detecting network topology changes
  • Analyzing CDN or anycast routing
Back to Menu

GET /tools/dns/reverse/{ip}

Performs reverse DNS lookup (PTR record) for an IP address.

Parameters

  • ip - IPv4 or IPv6 address to lookup

Example Request

curl -H "Accept: application/json" https://beeping.app/tools/dns/reverse/8.8.8.8

Example Response

{
  "ip": "8.8.8.8",
  "ptr_records": [
    "dns.google"
  ],
  "lookup_time_ms": 8,
  "success": true,
  "error": null,
  "forward_verified": true
}
Back to Menu

GET /health

Health check endpoint for monitoring service status. Returns plain text "OK".

Example Request

curl https://beeping.app/health

Example Response

OK
Back to Menu

GET /stats

Returns service statistics and metrics.

Headers

  • Accept: application/json - Returns JSON response
  • Accept: text/html - Returns HTML page (default)

Example Request

curl -H "Accept: application/json" https://beeping.app/stats

Example Response

{
  "total_requests": 3592661,
  "ipv4_requests": 3586495,
  "ipv6_requests": 6166,
  "bot_requests": 3583784,
  "json_requests": 12,
  "geo_requests": 3,
  "asn_requests": 2,
  "html_requests": 8865,
  "health_checks": 10,
  "errors": 0
}
Back to Menu

Code Examples

JavaScript (fetch)

fetch('https://beeping.app/', {
    headers: { 'Accept': 'application/json' }
})
.then(response => response.json())
.then(data => console.log(data));

Python (requests)

import requests

response = requests.get(
    'https://beeping.app/',
    headers={'Accept': 'application/json'}
)
print(response.json())

Go

package main

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    client := &http.Client{}
    req, _ := http.NewRequest("GET", "https://beeping.app/", nil)
    req.Header.Set("Accept", "application/json")
    
    resp, _ := client.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}