curl --request GET \
--url https://jmpy.me/api/v1/analytics/referrers \
--header 'Authorization: Bearer <token>'{
"data": [
{
"referrer": "<string>",
"source_category": "<string>",
"clicks": 123,
"unique_visitors": 123,
"percentage": 123
}
],
"traffic_sources": {
"social": 123,
"search": 123,
"direct": 123,
"other": 123
},
"category_totals": {}
}Get traffic source analytics for all your short URLs
curl --request GET \
--url https://jmpy.me/api/v1/analytics/referrers \
--header 'Authorization: Bearer <token>'{
"data": [
{
"referrer": "<string>",
"source_category": "<string>",
"clicks": 123,
"unique_visitors": 123,
"percentage": 123
}
],
"traffic_sources": {
"social": 123,
"search": 123,
"direct": 123,
"other": 123
},
"category_totals": {}
}7d, 30d, 90d, 1y, all_time, custom.
Takes precedence over days if specified.dateRange is custom.dateRange is custom.Show Referrer Object
Facebook, Twitter, LinkedIn, Instagram, YouTube, TikTok, Reddit, Pinterest, WhatsApp, Telegram, Discord, Google, Bing, Yahoo, DuckDuckGo, Direct, Other.# Get referrer data for last 30 days
curl -X GET "https://jmpy.me/api/v1/analytics/referrers?days=30" \
-H "Authorization: Bearer YOUR_API_KEY"
# Get referrer data for last 7 days
curl -X GET "https://jmpy.me/api/v1/analytics/referrers?dateRange=7d" \
-H "Authorization: Bearer YOUR_API_KEY"
# Custom date range
curl -X GET "https://jmpy.me/api/v1/analytics/referrers?dateRange=custom&startDate=2024-01-01&endDate=2024-03-31" \
-H "Authorization: Bearer YOUR_API_KEY"
const fetch = require('node-fetch');
const response = await fetch(
'https://jmpy.me/api/v1/analytics/referrers?days=30',
{
headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
}
);
const data = await response.json();
// Display traffic breakdown
const sources = data.data.traffic_sources;
console.log('Traffic Sources:');
console.log(` Social: ${sources.social} clicks`);
console.log(` Search: ${sources.search} clicks`);
console.log(` Direct: ${sources.direct} clicks`);
console.log(` Other: ${sources.other} clicks`);
// Top referrers
console.log('\nTop Referrers:');
data.data.data.slice(0, 5).forEach(ref => {
console.log(` ${ref.referrer}: ${ref.clicks} (${ref.percentage}%)`);
});
import axios from 'axios';
interface ReferrerData {
referrer: string;
source_category: string;
clicks: number;
unique_visitors: number;
percentage: number;
}
interface ReferrerAnalyticsResponse {
data: ReferrerData[];
traffic_sources: {
social: number;
search: number;
direct: number;
other: number;
};
category_totals: Record<string, {
clicks: number;
unique_visitors: number;
percentage: number;
}>;
}
const response = await axios.get<{ success: boolean; data: ReferrerAnalyticsResponse }>(
'https://jmpy.me/api/v1/analytics/referrers',
{
headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
params: { days: 30 }
}
);
const { traffic_sources, data: referrers } = response.data.data;
console.log('Social traffic:', traffic_sources.social);
console.log('Search traffic:', traffic_sources.search);
import requests
response = requests.get(
'https://jmpy.me/api/v1/analytics/referrers',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'days': 30}
)
data = response.json()['data']
# Traffic source breakdown
sources = data['traffic_sources']
total = sum(sources.values())
print("Traffic Source Breakdown:")
print(f" Social: {sources['social']} ({sources['social']/total*100:.1f}%)")
print(f" Search: {sources['search']} ({sources['search']/total*100:.1f}%)")
print(f" Direct: {sources['direct']} ({sources['direct']/total*100:.1f}%)")
print(f" Other: {sources['other']} ({sources['other']/total*100:.1f}%)")
# Top individual referrers
print("\nTop 10 Referrers:")
for ref in data['data'][:10]:
print(f" {ref['referrer']}: {ref['clicks']} clicks")
<?php
$client = new GuzzleHttp\Client();
$response = $client->request('GET', 'https://jmpy.me/api/v1/analytics/referrers', [
'headers' => [
'Authorization' => 'Bearer YOUR_API_KEY'
],
'query' => [
'days' => 30
]
]);
$data = json_decode($response->getBody(), true)['data'];
echo "Traffic Sources:\n";
echo " Social: " . $data['traffic_sources']['social'] . " clicks\n";
echo " Search: " . $data['traffic_sources']['search'] . " clicks\n";
echo " Direct: " . $data['traffic_sources']['direct'] . " clicks\n";
echo "\nTop Referrers:\n";
foreach (array_slice($data['data'], 0, 5) as $ref) {
echo " {$ref['referrer']}: {$ref['clicks']} clicks\n";
}
?>
package main
import (
"fmt"
"net/http"
"net/url"
"io"
)
func main() {
baseURL := "https://jmpy.me/api/v1/analytics/referrers"
params := url.Values{}
params.Add("days", "30")
req, _ := http.NewRequest("GET", baseURL+"?"+params.Encode(), nil)
req.Header.Add("Authorization", "Bearer YOUR_API_KEY")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.URI;
import java.net.http.HttpResponse;
String url = "https://jmpy.me/api/v1/analytics/referrers?days=30";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer YOUR_API_KEY")
.GET()
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"success": true,
"data": {
"data": [
{
"referrer": "Direct",
"source_category": "Direct",
"clicks": 1890,
"unique_visitors": 1654,
"percentage": 41.8
},
{
"referrer": "https://google.com",
"source_category": "Google",
"clicks": 1234,
"unique_visitors": 1098,
"percentage": 27.3
},
{
"referrer": "https://twitter.com",
"source_category": "Twitter",
"clicks": 567,
"unique_visitors": 489,
"percentage": 12.5
},
{
"referrer": "https://facebook.com",
"source_category": "Facebook",
"clicks": 432,
"unique_visitors": 398,
"percentage": 9.5
},
{
"referrer": "https://linkedin.com",
"source_category": "LinkedIn",
"clicks": 234,
"unique_visitors": 212,
"percentage": 5.2
},
{
"referrer": "https://example-blog.com",
"source_category": "Other",
"clicks": 166,
"unique_visitors": 143,
"percentage": 3.7
}
],
"traffic_sources": {
"social": 1233,
"search": 1234,
"direct": 1890,
"other": 166
},
"category_totals": {
"Direct": {
"clicks": 1890,
"unique_visitors": 1654,
"percentage": 41.8
},
"Google": {
"clicks": 1234,
"unique_visitors": 1098,
"percentage": 27.3
},
"Twitter": {
"clicks": 567,
"unique_visitors": 489,
"percentage": 12.5
},
"Facebook": {
"clicks": 432,
"unique_visitors": 398,
"percentage": 9.5
},
"LinkedIn": {
"clicks": 234,
"unique_visitors": 212,
"percentage": 5.2
},
"Other": {
"clicks": 166,
"unique_visitors": 143,
"percentage": 3.7
}
}
}
}
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "User authentication required"
}
}
| Category | Platforms |
|---|---|
| Social Media | Facebook, Twitter, LinkedIn, Instagram, YouTube, TikTok, Reddit, Pinterest |
| Messaging | WhatsApp, Telegram, Discord |
| Search Engines | Google, Bing, Yahoo, DuckDuckGo |
| Direct | No referrer (typed URL, bookmarks, etc.) |
| Other | Any other referring domain |
Marketing channel ROI analysis
async function analyzeChannelROI() {
const response = await fetch(
'https://jmpy.me/api/v1/analytics/referrers?days=30',
{ headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }
);
const { data } = await response.json();
const sources = data.traffic_sources;
const total = Object.values(sources).reduce((a, b) => a + b, 0);
// Calculate cost per click for each channel (example data)
const channelCosts = {
social: { spend: 500, name: 'Social Media Ads' },
search: { spend: 300, name: 'Search Ads' },
direct: { spend: 0, name: 'Direct/Organic' },
other: { spend: 100, name: 'Other Campaigns' }
};
console.log('Channel ROI Analysis (Last 30 Days)');
console.log('=====================================');
Object.entries(sources).forEach(([channel, clicks]) => {
const cost = channelCosts[channel];
const cpc = cost.spend > 0 ? (cost.spend / clicks).toFixed(2) : 'Free';
const share = ((clicks / total) * 100).toFixed(1);
console.log(`${cost.name}:`);
console.log(` Clicks: ${clicks} (${share}%)`);
console.log(` Cost: $${cost.spend}`);
console.log(` CPC: $${cpc}`);
console.log('');
});
}
Social media performance dashboard
Identify unknown referrers
import requests
def find_unknown_referrers():
known_sources = {
'Facebook', 'Twitter', 'LinkedIn', 'Instagram', 'YouTube',
'TikTok', 'Reddit', 'Pinterest', 'WhatsApp', 'Telegram',
'Discord', 'Google', 'Bing', 'Yahoo', 'DuckDuckGo', 'Direct'
}
response = requests.get(
'https://jmpy.me/api/v1/analytics/referrers',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
params={'days': 30}
)
referrers = response.json()['data']['data']
# Find referrers categorized as "Other"
unknown = [
ref for ref in referrers
if ref['source_category'] == 'Other'
]
print("Unknown/Other Referrers:")
print("=" * 50)
for ref in sorted(unknown, key=lambda x: -x['clicks']):
print(f"\n{ref['referrer']}:")
print(f" Clicks: {ref['clicks']}")
print(f" Unique Visitors: {ref['unique_visitors']}")
print(f" Share: {ref['percentage']}%")
# Potential action
if ref['clicks'] > 100:
print(" ⚠️ High traffic - consider adding to known sources")