CrUX API'si

CrUX API, sayfa ve kaynak ayrıntı düzeyinde birleştirilmiş gerçek kullanıcı deneyimi verilerine düşük gecikmeyle erişim sağlar.

Deneyin.

Yaygın kullanım alanı

CrUX API, belirli bir URI için kullanıcı deneyimi metriklerinin sorgulanmasına olanak tanır (ör. "https://example.com kaynağı için metrikleri al").

CrUX API anahtarı

CrUX API'yi kullanmak için Chrome UX Report API kullanımı için sağlanmış bir Google Cloud API anahtarı gerekir.

API anahtarı edinme ve kullanma

Anahtar alma

veya Kimlik Bilgileri sayfasında bir tane oluşturun.

API anahtarınız olduktan sonra uygulamanız, sorgu parametresi key=yourAPIKey'yı tüm istek URL'lerine ekleyebilir.

API anahtarı, URL'lere yerleştirmek için güvenlidir; herhangi bir kodlama yapmanız gerekmez.

Örnek sorgular bölümünü inceleyin.

Veri modeli

Bu bölümde, istek ve yanıtlardaki verilerin yapısı ayrıntılı olarak açıklanmaktadır.

Kaydet

Bir sayfa veya site hakkında ayrı bir bilgi parçası. Bir kayıtta, bir tanımlayıcıya ve belirli bir boyut kombinasyonuna özgü veriler bulunabilir. Bir kayıt, bir veya daha fazla metrikle ilgili veriler içerebilir.

Tanımlayıcılar

Tanımlayıcılar, hangi kayıtların aranacağını belirtir. CrUX'ta bu tanımlayıcılar web sayfaları ve web siteleridir.

Köken

Tanımlayıcı bir kaynak olduğunda, bu kaynaktaki tüm sayfalara ait tüm veriler birlikte toplanır. Örneğin, http://www.example.com kaynağında bu site haritasında belirtildiği gibi sayfalar olduğunu varsayalım:

http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html

Bu, kaynak http://www.example.com olarak ayarlanmış şekilde Chrome UX Report sorgulandığında http://www.example.com/, http://www.example.com/foo.html ve http://www.example.com/bar.html ile ilgili verilerin birleştirilerek döndürüleceği anlamına gelir. Çünkü bu sayfaların tümü söz konusu kaynağın altındadır.

URL'ler

Tanımlayıcı bir URL olduğunda yalnızca söz konusu URL'ye ait veriler döndürülür. http://www.example.com kaynak site haritasına tekrar bakarsak:

http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html

Tanımlayıcı, http://www.example.com/foo.html değeriyle URL olarak ayarlanırsa yalnızca o sayfanın verileri döndürülür.

Boyutlar

Boyutlar, bir kaydın toplandığı belirli bir veri grubunu tanımlar. Örneğin, PHONE form faktörü, kaydın bir mobil cihazda gerçekleşen yüklemelerle ilgili bilgiler içerdiğini gösterir. Her boyutun belirli sayıda değeri vardır ve bu boyutun belirtilmemesi, boyutun tüm değerler üzerinde toplandığı anlamına gelir. Örneğin, form faktörü belirtilmemesi, kaydın herhangi bir form faktöründe gerçekleşen yüklemelerle ilgili bilgiler içerdiğini gösterir.

Form Faktörü

Son kullanıcının sayfaya gitmek için kullandığı cihaz sınıfı. Bu, PHONE, TABLET ve DESKTOP olarak ayrılan genel bir cihaz sınıfıdır.

Metrik

Metrikleri histogramlar, yüzdelikler ve kesirler halinde istatistiksel toplamlar olarak raporlarız.

Kayan nokta değerleri 4 ondalık basamağa yuvarlanır (cumulative_layout_shift metriklerinin dize olarak kodlanmış çiftler olduğu için kayan nokta olarak kabul edilmediğini ve dize içinde 2 ondalık basamağa yuvarlanarak raporlandığını unutmayın).

Histogram

Metrikler histogramda gösterildiğinde, ilgili metrik için belirli aralıklara giren sayfa yükleme yüzdelerini gösteririz.

Örnek bir metrik için üç kutulu histogram şu şekilde görünür:

{
  "histogram": [
    {
      "start": 0,
      "end": 1000,
      "density": 0.3818
    },
    {
      "start": 1000,
      "end": 3000,
      "density": 0.4991
    },
    {
      "start": 3000,
      "density": 0.1192
    }
  ]
}

Bu veriler, sayfa yüklemelerinin% 38,18'inde örnek metriğin 0 ms ile 1.000 ms arasında ölçüldüğünü gösterir. Metriğin birimleri bu histogramda yer almıyor. Bu durumda milisaniye olarak kabul edeceğiz.

Ayrıca, sayfa yüklemelerinin% 49,91'inde 1.000 ms ile 3.000 ms arasında bir metrik değeri, %11,92'sinde ise 3.000 ms'den büyük bir değer görüldü.

Yüzdelikler

Metrikler, ek analizler için yararlı olabilecek yüzdelik dilimler de içerebilir. Belirli metrik değerlerini, ilgili metrik için belirtilen yüzdelik dilimde raporlarız. Bu değerler, nihai gruplandırılmış verileri değil, mevcut verilerin tamamını temel alır. Bu nedenle, nihai gruplandırılmış histogramı temel alan bir enterpolasyonlu yüzdelik dilimle eşleşmeyebilir.

{
  "percentiles": {
    "p75": 2063
  }
}

Bu örnekte, sayfa yüklemelerinin en az% 75'i <= 2063 metrik değeriyle ölçülmüştür.

Kesirler

Kesirler, belirli bir şekilde etiketlenebilecek sayfa yüklemelerinin yüzdelerini gösterir. Bu durumda, metrik değerleri bu etiketlerdir.

Örneğin, form_factors metriği, belirli bir sorgunun kapsadığı form faktörlerinin (veya cihazların) dökümünü listeleyen bir fractions nesnesinden oluşur:

"form_factors": {
  "fractions": {
    "desktop": 0.0377,
    "tablet": 0.0288,
    "phone": 0.9335
  }
}

Bu durumda, sayfa yüklemelerinin% 3,77'si masaüstünde, %2,88'i tablette ve% 93,35'i telefonda ölçülerek toplamda% 100'e ulaşılmıştır.

Metrik değer türleri

CrUX API Metrik Adı Veri Türü Metrik birimler İstatistiksel Toplamalar Belgeler
cumulative_layout_shift Dize olarak çift kodlanmış 2 ondalık basamak birimsiz üç bölmeli histogram, p75 ile yüzdelik dilimler CLS
interaction_to_next_paint int milisaniye Üç bölmeli histogram, p75 yüzdelik dilimleri INP
largest_contentful_paint int milisaniye Üç bölmeli histogram, p75 yüzdelik dilimleri LCP
experimental_cumulative_layout_shift_with_softnavs Dize olarak çift kodlanmış 2 ondalık basamak birimsiz üç bölmeli histogram, p75 ile yüzdelik dilimler Blog
experimental_interaction_to_next_paint_with_softnavs int milisaniye Üç bölmeli histogram, p75 yüzdelik dilimleri Blog
experimental_largest_contentful_paint_with_softnavs int milisaniye Üç bölmeli histogram, p75 yüzdelik dilimleri Blog
first_contentful_paint int milisaniye üç bölmeli histogram, p75 ile yüzdelik dilimler FCP
experimental_time_to_first_byte int milisaniye üç bölmeli histogram, p75 ile yüzdelik dilimler TTFB
form_factors 4 ondalık basamaklı çift yüzde form faktöründen kesre eşleme Form Faktörleri
navigation_types 4 ondalık basamaklı ondalıklı sayı yüzde gezinme türünden kesre eşleme Gezinme Türleri
round_trip_time int milisaniye Üç bölmeli histogram, p75 yüzdelik dilimleri RTT metriği
largest_contentful_paint_resource_type 4 ondalık basamaklı double yüzde gezinme türünden kesre eşleme LCP kaynak türleri
largest_contentful_paint_image_time_to_first_byte int milisaniye p75 ile yüzdelik dilimler LCP alt bölümleri
largest_contentful_paint_image_resource_load_delay int milisaniye 75. yüzdelik dilimle ilgili yüzdelik dilimler LCP alt bölümleri
largest_contentful_paint_image_resource_load_duration int milisaniye 75. yüzdelik dilimle LCP alt bölümleri
largest_contentful_paint_image_element_render_delay int milisaniye 75. yüzdelik dilimle LCP alt bölümleri
experimental_ad_count 2 ondalık basamaklı ondalıklı sayı birimsiz Yalnızca 75. yüzdelik dilim Reklam sayısı
experimental_ad_density 2 ondalık basamaklı ondalıklı sayı birimsiz Yalnızca 75. yüzdelik dilim Reklam yoğunluğu
experimental_ad_cpu int milisaniye Yalnızca 75. yüzdelik dilim Reklam ağırlığı: CPU
experimental_ad_kilobytes int KB Yalnızca 75. yüzdelik dilim Reklam Ağırlığı: Ağ

BigQuery metrik adı eşleme

CrUX API Metrik Adı BigQuery Metrik Adı
cumulative_layout_shift layout_instability.cumulative_layout_shift
first_contentful_paint first_contentful_paint
interaction_to_next_paint interaction_to_next_paint
largest_contentful_paint largest_contentful_paint
experimental_time_to_first_byte experimental.time_to_first_byte
navigation_types navigation_types
form_factors Yok
round_trip_time round_trip_time
largest_contentful_paint_resource_type Yok
largest_contentful_paint_image_time_to_first_byte Yok
largest_contentful_paint_image_resource_load_delay Yok
largest_contentful_paint_image_resource_load_duration Yok
largest_contentful_paint_image_element_render_delay Yok
experimental_ad_count Yok
experimental_ad_density Yok
experimental_ad_cpu Yok
experimental_ad_kilobytes Yok

Toplama dönemi

Ekim 2022 itibarıyla CrUX API, toplama aralığının başlangıç ve bitiş tarihlerini temsil eden firstDate ve endDate alanlarını içeren bir collectionPeriod nesnesi içerir. Örneğin:

    "collectionPeriod": {
      "firstDate": {
        "year": 2022,
        "month": 9,
        "day": 12
      },
      "lastDate": {
        "year": 2022,
        "month": 10,
        "day": 9
      }
    }

Bu sayede veriler daha iyi anlaşılır ve verilerin o gün için güncellenip güncellenmediği veya dünkü verilerin aynısını döndürüp döndürmediği anlaşılır.

Toplama dönemi PageSpeed Insights'ta da mevcuttur:

PageSpeed Insights, toplama dönemi tarihlerini bir ipucunda gösterir.
PageSpeed Insights'taki toplama dönemi tarihleri.

Ayrıca, veriler 28 günün tamamını kapsamasa bile (örneğin, bir sayfa 28 günden daha kısa bir süre önce yayınlandıysa) collectionPeriod her zaman 28 günü gösterir. collectionPeriod, CrUX verilerinin toplandığı dönemdir. Verilerin temsil ettiği dönem olması gerekmez.

Örnek sorgular

Sorgular, POST gövdesinde JSON nesnesi olarak sorgu verileriyle birlikte https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=[YOUR_API_KEY]" adresine bir POST isteği kullanılarak JSON nesneleri olarak gönderilir:

{
  "origin": "https://example.com",
  "formFactor": "PHONE",
  "metrics": [
    "largest_contentful_paint",
    "experimental_time_to_first_byte"
  ]
}

Örneğin, bu işlev curl üzerinden aşağıdaki komut satırıyla çağrılabilir (API_KEY yerine anahtarınızı girin):

curl -s --request POST 'https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=API_KEY' \
    --header 'Accept: application/json' \
    --header 'Content-Type: application/json' \
    --data '{"formFactor":"PHONE","origin":"https://www.example.com","metrics":["largest_contentful_paint", "experimental_time_to_first_byte"]}'

Sayfa düzeyindeki verilere, sorguda origin yerine url mülkü iletilerek API aracılığıyla erişilebilir:

{
  "url": "https://example.com/page",
  "formFactor": "PHONE",
  "metrics": [
    "largest_contentful_paint",
    "experimental_time_to_first_byte"
  ]
}

metrics özelliği ayarlanmazsa mevcut tüm metrikler döndürülür:

  • cumulative_layout_shift
  • first_contentful_paint
  • interaction_to_next_paint
  • largest_contentful_paint
  • experimental_time_to_first_byte
  • largest_contentful_paint_resource_type
  • largest_contentful_paint_image_time_to_first_byte
  • largest_contentful_paint_image_resource_load_delay
  • largest_contentful_paint_image_resource_load_duration
  • largest_contentful_paint_image_element_render_delay
  • navigation_types
  • round_trip_time
  • form_factors (yalnızca istekte formFactor belirtilmemişse raporlanır)
  • experimental_ad_count (yalnızca reklam metriklerine dahil edilen sayfalar için raporlanır)
  • experimental_ad_density (yalnızca reklam metriklerine dahil edilen sayfalar için raporlanır)
  • experimental_ad_cpu (yalnızca reklam metriklerine dahil edilen sayfalar için raporlanır)
  • experimental_ad_kilobytes (yalnızca reklam metriklerine dahil edilen sayfalar için raporlanır)

formFactor değeri sağlanmazsa değerler tüm form faktörlerinde toplanır.

Daha fazla örnek sorgu için Chrome Kullanıcı Deneyimi Raporu API'sini kullanma başlıklı makaleyi inceleyin.

Veri ardışık düzeni

CrUX veri kümesi, API kullanılarak kullanılabilir hale gelmeden önce verileri birleştirmek, toplamak ve filtrelemek için bir işlem hattı üzerinden işlenir.

Hareketli ortalama

Chrome UX Raporu'ndaki veriler, toplu metriklerin 28 günlük hareketli ortalamasıdır. Bu nedenle, Chrome UX Report'ta herhangi bir zamanda sunulan veriler aslında son 28 güne ait, birlikte toplanmış verilerdir.

Bu, BigQuery'deki CrUX veri kümesinin aylık raporları toplama şekline benzer.

Günlük güncellemeler

Veriler her gün 04:00 UTC civarında güncellenir. Güncelleme zamanları için hizmet düzeyi sözleşmesi yoktur. Güncelleme her gün en iyi çaba temelinde çalıştırılır.

Şema

CrUX API'nin POST HTTP isteklerini kabul eden tek bir uç noktası vardır. API, istenen kaynak veya sayfayla ilgili performans verilerine karşılık gelen bir veya daha fazla metrics içeren bir record döndürür.

HTTP isteği

POST https://chromeuxreport.googleapis.com/v1/records:queryRecord

URL, gRPC Kod Dönüştürme söz dizimini kullanır.

İstek metni

İstek içeriği aşağıdaki yapıyla birlikte verileri içermelidir:

{
  "formFactor": enum (FormFactor),
  "metrics": [
    string
  ],

  // Union field url_pattern can be only one of the following:
  "origin": string,
  "url": string
  // End of list of possible types for union field url_pattern.
}
Alanlar
formFactor

enum (FormFactor)

Form faktörü, kaydın verilerinin ait olması gereken cihaz sınıfını belirten bir sorgu boyutudur.

Bu alanda DESKTOP, PHONE veya TABLET değerleri kullanılır.

Not: Form faktörü belirtilmemişse tüm form faktörlerindeki verilerin toplandığı özel bir kayıt döndürülür.

metrics[]

string

Yanıta dahil edilmesi gereken metrikler. Hiçbiri belirtilmezse bulunan tüm metrikler döndürülür.

İzin verilen değerler: ["cumulative_layout_shift", "first_contentful_paint", "interaction_to_next_paint", "largest_contentful_paint", "experimental_time_to_first_byte", "largest_contentful_paint_resource_type", "largest_contentful_paint_image_time_to_first_byte", "largest_contentful_paint_image_resource_load_delay", "largest_contentful_paint_image_resource_load_duration", "largest_contentful_paint_image_element_render_delay", "navigation_types", "round_trip_time", "experimental_ad_count", "experimental_ad_density", "experimental_ad_cpu", "experimental_ad_kilobytes"]

url_pattern birleşik alanı. url_pattern, kayıt aramasının ana tanımlayıcısıdır. Aşağıdakilerden yalnızca biri olabilir:
origin

string

url_pattern "kaynak", bir web sitesinin kaynağı olan URL kalıbını ifade eder.

Örnekler: "https://example.com", "https://cloud.google.com"

url

string

url_pattern url, herhangi bir URL olan URL kalıbını ifade eder.

Örnekler: "https://example.com/, https://cloud.google.com/why-google-cloud/"

Örneğin, Chrome geliştirici belgeleri ana sayfası için masaüstü Largest Contentful Paint değerlerini istemek üzere:

{
  "url": "https://developer.chrome.com/docs/",
  "formFactor": "DESKTOP",
  "metrics": [
    "largest_contentful_paint"
  ]
}

Yanıt metni

Başarılı istekler, aşağıdaki yapıda bir record nesnesi ve urlNormalizationDetails içeren yanıtlar döndürür:

{
  "record": {
    "key": {
      object (Key)
    },
    "metrics": [
      string: {
        object (Metric)
      }
    ]
  },
  "urlNormalizationDetails": {
    object (UrlNormalization)
  }
}

Örneğin, önceki istekteki istek gövdesine verilen yanıt şu şekilde olabilir:

{
  "record": {
    "key": {
      "formFactor": "DESKTOP",
      "url": "https://developer.chrome.com/docs/"
    },
    "metrics": {
      "largest_contentful_paint": {
        "histogram": [
          {
            "start": 0,
            "end": 2500,
            "density": 0.9815
          },
          {
            "start": 2500,
            "end": 4000,
            "density": 0.0108
          },
          {
            "start": 4000,
            "density": 0.0077
          }
        ],
        "percentiles": {
          "p75": 651
        }
      }
    },
    "collectionPeriod": {
      "firstDate": {
        "year": 2022,
        "month": 9,
        "day": 12
      },
      "lastDate": {
        "year": 2022,
        "month": 10,
        "day": 9
      }
    }
  }
}

Anahtar

Key, bu kaydı benzersiz olarak tanımlayan tüm boyutları tanımlar.

{
  "formFactor": enum (FormFactor),

  // Union field url_pattern can be only one of the following:
  "origin": string,
  "url": string
  // End of list of possible types for union field url_pattern.
}
Alanlar
formFactor

enum (FormFactor)

Form faktörü, tüm kullanıcıların bu kayıt için siteye erişmek üzere kullandığı cihaz sınıfıdır.

Form faktörü belirtilmezse tüm form faktörleri üzerinden birleştirilmiş veriler döndürülür.

url_pattern birleşik alanı. URL kalıbı, kaydın uygulandığı URL'dir. url_pattern aşağıdakilerden yalnızca biri olabilir:
origin

string

origin, bu kaydın hangi kaynak için olduğunu belirtir.

Not: Bir origin belirtirken bu kaynak altındaki tüm sayfalardaki yüklemelerle ilgili veriler, kaynak düzeyinde kullanıcı deneyimi verileri olarak toplanır.

url

string

url, bu kaydın ait olduğu belirli bir URL'yi belirtir.

Not: Bir url belirtirken yalnızca söz konusu URL'ye ait veriler toplanır.

Metrikler

metric, tek bir web performansı metriği (ör. ilk zengin içerikli boyama) için toplu kullanıcı deneyimi verileri kümesidir. Gerçek dünyadaki Chrome kullanımının özet histogramını bir dizi bins, belirli yüzdelik dilim verisi (ör. p75) olarak içerebilir veya etiketli kesirler içerebilir.

{
  "histogram": [
    {
      object (Bin)
    }
  ],
  "percentiles": {
    object (Percentiles)
  }
}

veya

{
  "fractions": {
    object (Fractions)
  }
}
Alanlar
histogram[]

object (Bin)

Bir metriğe ait kullanıcı deneyimlerinin histogramı. Histogramda en az bir kutu bulunur ve tüm kutuların yoğunlukları toplamı yaklaşık 1'dir.

percentiles

object (Percentiles)

Metriğin yaygın olarak kullanılan yüzdelik dilimleri. Yüzdelik dilimlerin değer türü, histogram bölmeleri için verilen değer türleriyle aynı olur.

fractions

object (Fractions)

Bu nesne, toplamı yaklaşık 1 olan etiketli kesirler içerir.

Kesirler 4 ondalık basamağa yuvarlanır.

Bölme

bin, başlangıçtan bitişe kadar uzanan veya bitiş belirtilmemişse başlangıçtan pozitif sonsuza kadar uzanan ayrı bir veri parçasıdır.

Bir aralığın başlangıç ve bitiş değerleri, temsil ettiği metriğin değer türünde verilir. Örneğin, First Contentful Paint milisaniye cinsinden ölçülür ve tam sayı olarak gösterilir. Bu nedenle, metrik grupları başlangıç ve bitiş türleri için int32'leri kullanır. Ancak kümülatif düzen kayması birimsiz ondalık sayılarla ölçülür ve dize olarak kodlanmış bir ondalık sayı olarak gösterilir. Bu nedenle, metrik grupları değer türü için dizeleri kullanır.

{
  "start": value,
  "end": value,
  "density": number
}
Alanlar
start

(integer | string)

Başlangıç, veri grubunun başlangıcıdır.

end

(integer | string)

Bitiş, veri grubunun sonudur. Bitiş değeri doldurulmamışsa aralığın bitişi yoktur ve başlangıçtan +inf'ye kadar geçerlidir.

density

number

Belirli bir metrik için bu aralığın değerini deneyimleyen kullanıcıların oranı.

Yoğunluklar 4 ondalık basamağa yuvarlanır.

Yüzdelikler

Percentiles, belirli bir istatistiksel yüzdelik dilimdeki bir metriğin yapay değerlerini içerir. Bunlar, bir metriğin değerini toplam kullanıcı sayısının belirli bir yüzdesi tarafından deneyimlendiği şekilde tahmin etmek için kullanılır.

{
  "P75": value
}
Alanlar
p75

(integer | string)

Sayfa yüklemelerinin% 75'i, söz konusu metriği bu değerde veya daha düşük bir değerde deneyimledi.

Kesirler

Fractions, toplamı yaklaşık 1 olan etiketli kesirler içerir. Her etiket, sayfa yükleme işlemini bir şekilde açıklar. Bu nedenle, bu şekilde temsil edilen metriklerin sayısal değerler yerine farklı değerler ürettiği düşünülebilir ve kesirler, belirli bir farklı değerin ne sıklıkta ölçüldüğünü ifade eder.

{
  "label_1": fraction,
  "label_2": fraction,
  ...
  "label_n": fraction
}

Histogram kutularındaki yoğunluk değerlerine benzer şekilde, her bir fraction bir sayıdır 0.0 <= value <= 1.0 ve toplamları yaklaşık 1, 0'dır.

UrlNormalization

Başarılı bir arama şansını artırmak için URL'yi normalleştirmek üzere gerçekleştirilen normalleştirme işlemlerini temsil eden nesne. Bunlar, sağlanan url_pattern aranırken başarısız olacağı bilindiğinde yapılan temel, otomatik değişikliklerdir. Yönlendirmeleri takip etme gibi karmaşık işlemler gerçekleştirilmez.

{
  "originalUrl": string,
  "normalizedUrl": string
}
Alanlar
originalUrl

string

Herhangi bir normalleştirme işleminden önceki orijinal istek URL'si.

normalizedUrl

string

Normalleştirme işlemlerinden sonraki URL. Bu, makul bir şekilde aranabilecek geçerli bir kullanıcı deneyimi URL'sidir.

Hız sınırları

CrUX API, Google Cloud projesi başına dakikada 150 sorgu ile sınırlıdır ve ücretsiz olarak sunulur. Bu sınırı ve mevcut kullanımınızı Google Cloud Console'da görebilirsiniz. Bu yüksek kota, kullanım alanlarının büyük çoğunluğu için yeterli olmalıdır. Kota artışı için ödeme yapmak mümkün değildir.