Ambil analitik profil Google, Facebook, dan Bing

Ambil metrik profil harian Google dan Facebook serta tayangan mingguan Bing per lokasi, jumlahkan data bulanan, dan bandingkan dua periode.

Analitik profil menunjukkan seberapa sering suatu lokasi dilihat dan ditindaklanjuti di setiap platform publikasi: tayangan, permintaan petunjuk arah, panggilan, dan klik situs web. Setiap metrik berupa deret waktu yang terdiri dari titik data { startTime, value }, sehingga total yang Anda tampilkan merupakan hasil perhitungan Anda sendiri.

1. Baca metrik Google untuk rentang tanggal

GET /locations/{locationId}/google-analytics?fromDate=&toDate= mengembalikan data.googleInsights dengan satu deret harian per metrik. total adalah tayangan profil, yaitu search ditambah maps; metrik ini tidak mencakup metrik tindakan.

Google
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/google-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "googleInsights": {      "total": [        { "startTime": "2026-08-01T00:00:00+00:00", "value": 412 },        { "startTime": "2026-08-02T00:00:00+00:00", "value": 388 }      ],      "search": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 300 }],      "maps": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 112 }],      "directionsAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 24 }],      "phoneAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 8 }],      "websiteAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 41 }],      "businessBookings": null,      "businessFoodOrders": null,      "businessFoodMenuClicks": null    }  }}
DeretMakna
totalTayangan, search ditambah maps.
search, mapsTayangan di Google Search dan Google Maps.
directionsAction, phoneAction, websiteActionPermintaan petunjuk arah, klik panggilan, klik situs web.
businessBookings, businessFoodOrders, businessFoodMenuClicksPemesanan, pesanan makanan, dan klik menu, untuk profil yang menyediakannya.

ID lokasi dengan format yang salah menghasilkan respons 200 dengan googleInsights: null dan array errors, yang terlihat seperti profil yang tidak terhubung. Periksa errors terlebih dahulu.

2. Baca metrik Facebook

GET .../facebook-analytics memiliki struktur yang sama di dalam data.facebookInsights dengan lima deret harian: views, ctaAction, directionsAction, phoneAction, dan websiteAction.

Facebook
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/facebook-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "facebookInsights": {      "views": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 120 }],      "ctaAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 5 }],      "directionsAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 3 }],      "phoneAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 2 }],      "websiteAction": [{ "startTime": "2026-08-01T00:00:00+00:00", "value": 9 }]    }  }}

ctaAction menghitung klik pada tombol ajakan bertindak di Halaman, yang Anda gunakan untuk mengukur kampanye "Pesan sekarang" atau "Telepon sekarang". Tidak ada metrik suka halaman.

3. Baca tayangan Bing

GET .../bing-analytics mengembalikan satu deret, data.bingInsights.views, yang dikelompokkan per minggu, bukan per hari. Data diperbarui setiap Senin untuk minggu sebelumnya, jadi ambil rentang beberapa bulan untuk membuat garis tren.

Bing
curl "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/bing-analytics?fromDate=2026-06-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY"
JSON
{  "data": {    "bingInsights": {      "views": [        { "startTime": "2026-06-01T00:00:00+00:00", "value": 73 },        { "startTime": "2026-06-08T00:00:00+00:00", "value": 58 }      ]    }  }}

Berbeda dengan Google dan Facebook, Bing melaporkan ketiadaan data sebagai array views kosong, bukan null. Perlakukan keduanya sebagai "tidak ada yang dapat ditampilkan".

4. Jumlahkan deret menjadi total bulanan

Ambil data untuk bulan tersebut, lalu jumlahkan value dari setiap titik data. Bedakan null dari nol: profil yang tidak terhubung harus ditampilkan sebagai "tidak tersedia", bukan sebagai bulan tanpa trafik. Halaman analitik Node SDK memiliki fungsi bantu sumSeries yang sama.

Monthly total
# jq: null when the metric is null, otherwise the sum of valuescurl -s "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/google-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY" \| jq '.data.googleInsights | { search: (if .search == null then null else ([.search[].value] | add) end),                               maps: (if .maps == null then null else ([.maps[].value] | add) end) }'

Bing memerlukan satu pemeriksaan tambahan: penjumlahan array views kosong menghasilkan 0, jadi periksa kondisi length == 0 jika Anda juga ingin menampilkan "tidak ada data" untuk kasus tersebut.

5. Bandingkan dua periode

Ambil metrik yang sama untuk dua rentang dengan durasi yang sama dan hitung perubahan dari kedua total tersebut. API tidak memiliki perbandingan bawaan untuk analitik profil; field delta hanya tersedia pada analitik ulasan.

Two periods
curl -s "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/google-analytics?fromDate=2026-07-01&toDate=2026-07-31" \-H "Authorization: API $LISTINGSAPI_KEY" | jq '[.data.googleInsights.total[].value] | add' curl -s "https://listingsapi.com/api/v4/locations/TG9jYXRpb246MTgwMDI4OQ==/google-analytics?fromDate=2026-08-01&toDate=2026-08-31" \-H "Authorization: API $LISTINGSAPI_KEY" | jq '[.data.googleInsights.total[].value] | add'

Tangani tiga kasus: salah satu periode bernilai null (tidak terhubung), periode sebelumnya bernilai 0 (pembagian dengan nol), dan rentang yang masih berlangsung, karena bulan yang belum lengkap selalu tampak mengalami penurunan jika dibandingkan dengan bulan penuh. Setiap panggilan diperhitungkan dalam batas laju Anda, jadi simpan data periode sebelumnya dalam cache alih-alih mengambilnya kembali setiap kali tampilan dirender.

Langkah berikutnya