peeringdb-ts
v1.0.0
Published
TypeScript client for the PeeringDB API. Search networks, IXPs, facilities. Zero dependencies.
Maintainers
Readme
peeringdb-ts
TypeScript client for the PeeringDB API. Search networks, IXPs, and facilities. Zero dependencies.
Install
npm install peeringdb-tsRequires Node.js 18+ (uses native fetch).
Quick Start
import { PeeringDBClient } from 'peeringdb-ts';
const pdb = new PeeringDBClient();
// Look up a network by ASN
const cloudflare = await pdb.getNetworkByASN(13335);
console.log(cloudflare.name); // "Cloudflare, Inc."
console.log(cloudflare.info_traffic); // "100-200 Gbps"
// Find where a network peers
const connections = await pdb.getNetworkIXConnections(13335);
console.log(`Cloudflare peers at ${connections.length} IXP ports`);
// Search IXPs
const ixps = await pdb.searchIXPs('DE-CIX');
console.log(ixps.map(ix => `${ix.name} (${ix.city}, ${ix.country})`));
// Search facilities
const facilities = await pdb.searchFacilities('Equinix');
console.log(facilities.map(f => `${f.name} - ${f.city}, ${f.country}`));API Reference
Constructor
const pdb = new PeeringDBClient({
baseUrl?: string, // Default: "https://www.peeringdb.com/api"
timeout?: number, // Default: 10000 (ms)
apiKey?: string, // Optional API key for higher rate limits
});Networks
pdb.searchNetworks(query: string): Promise<Network[]>
pdb.getNetwork(id: number): Promise<Network>
pdb.getNetworkByASN(asn: number): Promise<Network>
pdb.listNetworks({ limit?, skip? }): Promise<Network[]>IX Connections
pdb.getNetworkIXConnections(asn: number): Promise<IXConnection[]>
pdb.getIXConnections(ixId: number): Promise<IXConnection[]>Network Facilities
pdb.getNetworkFacilities(asn: number): Promise<NetworkFacility[]>Internet Exchange Points
pdb.searchIXPs(query: string): Promise<IXP[]>
pdb.getIXP(id: number): Promise<IXP>
pdb.listIXPsByCountry(country: string): Promise<IXP[]>Facilities
pdb.searchFacilities(query: string): Promise<FacilityInfo[]>
pdb.getFacility(id: number): Promise<FacilityInfo>
pdb.listFacilitiesByCity(city: string): Promise<FacilityInfo[]>
pdb.listFacilitiesByCountry(country: string): Promise<FacilityInfo[]>Error Handling
import { PeeringDBClient, PeeringDBError } from 'peeringdb-ts';
try {
const network = await pdb.getNetworkByASN(99999999);
} catch (err) {
if (err instanceof PeeringDBError) {
console.error(`API error ${err.statusCode}: ${err.message}`);
}
}Types
All PeeringDB API response types are fully typed and exported:
import type {
Network,
IXP,
IXConnection,
FacilityInfo,
NetworkFacility,
PeeringDBClientOptions,
} from 'peeringdb-ts';Authentication
PeeringDB allows anonymous access but with rate limits. For higher limits, create an API key at peeringdb.com and pass it to the client:
const pdb = new PeeringDBClient({ apiKey: 'your-api-key' });License
MIT
