curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetAdInsights {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"level": "campaign",
"startDate": "2026-10-01",
"endDate": "2026-10-07",
"insights": [
{
"date": "2026-10-01",
"level": "campaign",
"id": "21534567890",
"currency": "USD",
"spend": 12.48,
"impressions": 1830,
"clicks": 41,
"cpm": 6.82,
"cpc": 0.3,
"ctr": 2.2404,
"actions": 3.5,
"conversionValue": 140
}
],
"count": 1,
"nextCursor": null
}
Google Ads
Insights
Lấy số liệu Google Ads hằng ngày trực tiếp cho chiến dịch, nhóm quảng cáo hoặc quảng cáo của bạn, gồm lượt nhấp, chi phí, số chuyển đổi và giá trị chuyển đổi.
GET
/
ads
/
google
/
insights
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetAdInsights {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"level": "campaign",
"startDate": "2026-10-01",
"endDate": "2026-10-07",
"insights": [
{
"date": "2026-10-01",
"level": "campaign",
"id": "21534567890",
"currency": "USD",
"spend": 12.48,
"impressions": 1830,
"clicks": 41,
"cpm": 6.82,
"cpc": 0.3,
"ctr": 2.2404,
"actions": 3.5,
"conversionValue": 140
}
],
"count": 1,
"nextCursor": null
}
Lấy hiệu suất Google Ads trực tiếp, mỗi ngày một dòng, cho các chiến dịch, nhóm quảng cáo hoặc quảng cáo mà bạn đã tạo qua Ayrshare.
- Số liệu được đọc từ Google tại thời điểm bạn gọi, không phải từ bản sao được tạo mỗi đêm.
- Tất cả các giá trị tiền tệ đều tính theo đơn vị tiền tệ của tài khoản quảng cáo, được trả về trong
currencytrên mỗi hàng. - Google bỏ qua những ngày không có hoạt động, vì vậy một khoảng thời gian có thể trả về ít dòng hơn số ngày trong khoảng đó.
- Google điều chỉnh chi phí và số chuyển đổi của một ngày trong vài ngày sau khi ngày đó kết thúc, vì vậy các ngày gần đây có thể thay đổi giữa các lần đọc.
- Với chiến dịch Performance Max, hãy dùng
level=campaignvới id chiến dịch. Chiến dịch Performance Max không có quảng cáo riêng, vì vậylevel=adkhông trả về dòng nào.
Tham số Header
Tham số Query
string
bắt buộc
Đối tượng mà mỗi hàng báo cáo:
campaign (campaignId từ Create), adSet (adGroupId từ Create) hoặc ad (adId từ Create).string
bắt buộc
Các id chiến dịch, nhóm quảng cáo hoặc quảng cáo, phân tách bằng dấu phẩy, tối đa 50. Tất cả phải thuộc cùng một tài khoản quảng cáo.
string
Mã khách hàng Google Ads gồm 10 chữ số, có hoặc không có dấu gạch nối (
123-456-7890).Báo cáo quảng cáo và nhóm quảng cáo đọc tài khoản quảng cáo bạn nêu ở đây. Nếu không có tham số này, báo cáo quảng cáo sẽ tìm trong mọi tài khoản quảng cáo mà liên kết Google Ads của bạn truy cập được, tối đa 25 tài khoản, và báo cáo nhóm quảng cáo chỉ hoạt động khi liên kết của bạn chỉ truy cập được một tài khoản quảng cáo. Hãy nêu tài khoản khi liên kết của bạn truy cập được hơn 25 tài khoản quảng cáo, hoặc hơn một tài khoản đối với báo cáo nhóm quảng cáo. Nếu không, yêu cầu sẽ trả về code: 101.string
Các chỉ số cần trả về, phân tách bằng dấu phẩy. Bỏ qua tham số này để nhận tất cả. Xem Chỉ số.
string
mặc định:"30 ngày trước"
Ngày đầu tiên, theo định dạng
YYYY-MM-DD. Google lưu số liệu hằng ngày trong 37 tháng; một startDate cũ hơn sẽ trả về code: 101.string
mặc định:"hôm nay"
Ngày cuối cùng, theo định dạng
YYYY-MM-DD.Chỉ số
| Chỉ số | Kiểu | Ý nghĩa |
|---|---|---|
spend | number | Số tiền đã chi |
impressions | number | Số lần quảng cáo được hiển thị |
clicks | number | Số lượt nhấp |
cpm | number hoặc null | Chi phí cho mỗi 1.000 lượt hiển thị. null vào ngày không có lượt hiển thị |
cpc | number hoặc null | Chi phí cho mỗi lượt nhấp. null vào ngày không có lượt nhấp |
ctr | number hoặc null | Tỷ lệ nhấp, tính theo phần trăm. null vào ngày không có lượt hiển thị |
actions | number | Số chuyển đổi của Google, có thể là số thập phân |
conversionValue | number | Giá trị của các chuyển đổi đó |
actions và conversionValue giữ nguyên 0 cho đến khi tính năng theo dõi chuyển đổi được thiết lập trong tài khoản Google Ads của bạn. reach không khả dụng vì Google không báo cáo phạm vi tiếp cận duy nhất cho Search, và breakdowns không khả dụng trên Google. Yêu cầu một trong hai sẽ trả về code: 101.
Phân trang
Mọi dòng được trả về trong một phản hồi duy nhất, vì vậynextCursor luôn là null.
Lỗi
| Mã | Khi nào |
|---|---|
101 | Thiếu tham số hoặc tham số sai, chỉ số hoặc breakdown không được hỗ trợ, startDate cách đây hơn 37 tháng, gửi hơn 50 id, các id thuộc nhiều tài khoản quảng cáo, hoặc cần accountId nhưng bị thiếu |
400 | Chiến dịch, nhóm quảng cáo hoặc quảng cáo không thuộc về bạn, hoặc accountId không phải là tài khoản quảng cáo mà Ayrshare ghi nhận cho các id bạn đã gửi |
370 | Google không thể trả về insights. Hãy thử lại |
curl \
-H "Authorization: Bearer API_KEY" \
-X GET "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"
const API_KEY = "API_KEY";
fetch("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", {
method: "GET",
headers: {
"Authorization": `Bearer ${API_KEY}`
}
})
.then((res) => res.json())
.then((json) => console.log(json))
.catch(console.error);
import requests
headers = {
"Authorization": "Bearer API_KEY",
}
r = requests.get("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", headers=headers)
print(r.json())
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer API_KEY"
]
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error: " . $err;
} else {
echo $response;
}
?>
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer API_KEY");
var response = await client.GetAsync("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07");
var content = await response.Content.ReadAsStringAsync();
Console.WriteLine(content);
}
}
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07", nil)
req.Header.Add("Authorization", "Bearer API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class GetAdInsights {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07"))
.header("Authorization", "Bearer API_KEY")
.GET()
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
require 'net/http'
require 'uri'
uri = URI.parse('https://api.ayrshare.com/api/ads/google/insights?level=campaign&ids=21534567890&startDate=2026-10-01&endDate=2026-10-07')
request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer API_KEY'
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.body
{
"status": "success",
"platform": "google",
"level": "campaign",
"startDate": "2026-10-01",
"endDate": "2026-10-07",
"insights": [
{
"date": "2026-10-01",
"level": "campaign",
"id": "21534567890",
"currency": "USD",
"spend": 12.48,
"impressions": 1830,
"clicks": 41,
"cpm": 6.82,
"cpc": 0.3,
"ctr": 2.2404,
"actions": 3.5,
"conversionValue": 140
}
],
"count": 1,
"nextCursor": null
}