1.0.0 • Published 4 months ago
cloudflare-analytics v1.0.0
cloudflare-analytics
Cloudflare Analytics wrapper for Node.js
npm i cloudflare-analytics
https://developers.cloudflare.com/analytics/graphql-api/
Usage
const CloudflareAnalytics = require('cloudflare-analytics')
const cfa = new CloudflareAnalytics()
const zones = await cfa.zones()
const sites = await cfa.sites()
const zone = zones.find(zone => zone.name === 'example.com')
const site = sites.find(site => site.host.includes(zone.name))
const traffic = await cfa.httpTraffic(zone.id)
const analytics = await cfa.webAnalytics(site.site_tag)
console.log(traffic)
console.log(analytics)
API
cfa = new CloudflareAnalytics([options])
Create a Cloudflare Analytics instance.
Options:
{
accountId: process.env.CF_ACCOUNT_ID,
token: process.env.CF_TOKEN
}
out = await cfa.api(pathname[, options])
Make any request to Cloudflare.
Options:
{
method: 'GET',
query,
body
}
data = await cfa.graphql(query[, options])
Execute a custom GraphQL query.
Options:
{
operationName,
variables
}
zones = await cfa.zones()
List zones.
sites = await cfa.sites()
List sites.
traffic = await cfa.httpTraffic(zoneId[, options])
Get the HTTP Traffic details of a zone.
Options:
{
since, // ISO time e.g. '2025-02-24T17:00:00.000Z'
until // ISO time e.g.: '2025-02-25T17:00:00.000Z'
}
Returns:
[..., {
dimensions: { datetime },
sum: {
browserMap,
bytes,
cachedBytes,
cachedRequests,
clientSSLMap,
contentTypeMap,
countryMap,
encryptedBytes,
encryptedRequests,
ipClassMap,
pageViews,
requests,
responseStatusMap,
threatPathingMap,
threats
},
uniq: { uniques }
}]
analytics = await cfa.webAnalytics(siteTag)
Get the Web Analytics details of a site.
Options:
{
since, // ISO time e.g. '2025-02-24T17:13:37.133Z'
until // ISO time e.g.: '2025-02-25T17:13:37.133Z'
}
Returns:
{
countries: [
{
avg: { sampleInterval },
count,
dimensions: { metric },
sum: { visits }
},
{ avg, count, dimensions, sum }
],
topBrowsers: [
{ avg, count, dimensions, sum },
{ avg, count, dimensions, sum }
],
topDeviceTypes: [
{ avg, count, dimensions, sum },
{ avg, count, dimensions, sum }
],
topHosts: [ { avg, count, dimensions, sum } ],
topOSs: [
{ avg, count, dimensions, sum },
{ avg, count, dimensions, sum }
],
topPaths: [ { avg, count, dimensions, sum } ],
topReferers: [ { avg, count, dimensions, sum } ],
total: [ { count, sum } ]
}
Notes
https://developers.cloudflare.com/analytics/graphql-api/migration-guides/zone-analytics/
https://developers.cloudflare.com/analytics/graphql-api/getting-started/querying-basics/
https://pages.johnspurlock.com/graphql-schema-docs/cloudflare.html
License
MIT
1.0.0
4 months ago