GET
/
qranalytics
/
overview
QR Analytics Overview
curl --request GET \
  --url https://jmpy.me/api/v1/qranalytics/overview \
  --header 'Authorization: Bearer <token>'
{
  "summary": {
    "totalQRCodes": 123,
    "trackedQRCodes": 123,
    "totalScans": 123,
    "uniqueScanners": 123,
    "scannedQRCodes": 123,
    "lastScanAt": "<string>",
    "growthPercentage": 123,
    "avgScansPerQR": 123
  },
  "period": {
    "start": "<string>",
    "end": "<string>",
    "dateRange": "<string>",
    "isAllTime": true
  }
}
Get a comprehensive analytics overview with summary statistics for all your QR codes. This endpoint provides high-level metrics including total scans, unique scanners, growth rates, and period-based filtering.
This endpoint returns user-level aggregated analytics across all your QR codes. For analytics on a specific QR code, use the Complete Analytics endpoint.

Query Parameters

dateRange
string
default:"30d"
Predefined date range filter: 7d, 30d, 90d, 1y, all_time, custom.When set to custom, you must provide both startDate and endDate parameters.
startDate
string
Start date for custom range (ISO 8601 format). Required when dateRange is custom.Example: 2024-01-01T00:00:00Z
endDate
string
End date for custom range (ISO 8601 format). Required when dateRange is custom.Example: 2024-12-31T23:59:59Z

Response

summary
object
Aggregated statistics across all your QR codes.
period
object
Information about the date range applied to the query.

Request Examples

# Basic request - get overview for last 30 days
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Get all-time statistics
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=all_time" \
  -H "Authorization: Bearer YOUR_API_KEY"

# Custom date range
curl -X GET "https://jmpy.me/api/v1/qranalytics/overview?dateRange=custom&startDate=2024-01-01T00:00:00Z&endDate=2024-12-31T23:59:59Z" \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Examples

{
  "success": true,
  "data": {
    "summary": {
      "totalQRCodes": 156,
      "trackedQRCodes": 142,
      "totalScans": 24589,
      "uniqueScanners": 18234,
      "scannedQRCodes": 89,
      "lastScanAt": "2025-01-07T15:30:00Z",
      "growthPercentage": 12.5,
      "avgScansPerQR": 157.6
    },
    "period": {
      "start": "2024-12-08T00:00:00Z",
      "end": "2025-01-07T00:00:00Z",
      "dateRange": "30d",
      "isAllTime": false
    }
  }
}

Use Cases

Display key QR metrics in a dashboard widget showing total QR codes, scans, and performance.
async function getQRDashboardStats() {
  const response = await fetch(
    'https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d',
    { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
  );
  const { data } = await response.json();
  
  return {
    totalQRCodes: data.summary.totalQRCodes,
    totalScans: data.summary.totalScans,
    avgScansPerQR: data.summary.avgScansPerQR,
    growthTrend: data.summary.growthPercentage > 0 ? 'up' : 'down',
    growthValue: Math.abs(data.summary.growthPercentage)
  };
}
Analyze QR performance across different time periods.
async function compareQRPerformance() {
  const [thisMonth, lastMonth] = await Promise.all([
    fetch('https://jmpy.me/api/v1/qranalytics/overview?dateRange=30d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json()),
    fetch('https://jmpy.me/api/v1/qranalytics/overview?dateRange=90d', {
      headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
    }).then(r => r.json())
  ]);
  
  console.log('This month scans:', thisMonth.data.summary.totalScans);
  console.log('Growth vs previous:', thisMonth.data.summary.growthPercentage + '%');
}
Calculate what percentage of your QR codes are actively being scanned.
import requests

def get_qr_engagement_rate():
    response = requests.get(
        'https://jmpy.me/api/v1/qranalytics/overview',
        headers={'Authorization': 'Bearer YOUR_API_KEY'},
        params={'dateRange': '30d'}
    )
    data = response.json()['data']['summary']
    
    if data['totalQRCodes'] > 0:
        engagement_rate = (data['scannedQRCodes'] / data['totalQRCodes']) * 100
        print(f"QR Engagement Rate: {engagement_rate:.1f}%")
        print(f"Active QR Codes: {data['scannedQRCodes']} / {data['totalQRCodes']}")
    
    return engagement_rate

Scans Timeline

Get time-series scan data with configurable granularity

Top Performing QR Codes

Get your best performing QR codes ranked by scans

Recent Activity

See the most recently scanned QR codes

UTM Analytics

Track campaign performance with UTM parameters