De CrUX API biedt toegang met lage vertraging tot verzamelde gegevens over de gebruikerservaring van echte gebruikers op pagina- en oorsprongsniveau.
Veelvoorkomende toepassing
Met de CrUX API kun je statistieken over de gebruikerservaring opvragen voor een specifieke URI, zoals 'Statistieken ophalen voor de oorsprong https://example.com'.
CrUX API-sleutel
Voor het gebruik van de CrUX API is een Google Cloud API-sleutel vereist die is ingesteld voor Chrome UX Report API-gebruik.
Een API-sleutel verkrijgen en gebruiken
Een sleutel krijgenOf maak er een op de pagina Inloggegevens.
Nadat je een API-sleutel hebt, kan je app de queryparameter key=yourAPIKey toevoegen aan alle verzoek-URL's.
De API-sleutel kan veilig worden ingesloten in URL's. Er is geen codering nodig.
Ga naar Voorbeeldquery's.
Gegevensmodel
In dit gedeelte wordt de structuur van gegevens in verzoeken en reacties beschreven.
Opnemen
Een afzonderlijk stukje informatie over een pagina of site. Een record kan gegevens bevatten die specifiek zijn voor een ID en voor een specifieke combinatie van dimensies. Een record kan gegevens voor een of meer statistieken bevatten.
ID's
ID's geven aan welke records moeten worden opgezocht. In CrUX zijn deze ID's webpagina's en websites.
Origin
Als de ID een oorsprong is, worden alle gegevens die aanwezig zijn voor alle pagina's in die oorsprong, samengevoegd. Stel dat de oorsprong http://www.example.com pagina's heeft die zijn ingedeeld volgens deze sitemap:
http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html
Dit betekent dat als je het Chrome UX Report opvraagt met de oorsprong ingesteld op http://www.example.com, gegevens voor http://www.example.com/, http://www.example.com/foo.html en http://www.example.com/bar.html worden geretourneerd, samengevoegd, omdat dit allemaal pagina's onder die oorsprong zijn.
URL's
Als de ID een URL is, worden alleen gegevens voor die specifieke URL geretourneerd. We kijken opnieuw naar de sitemap van de oorsprong http://www.example.com:
http://www.example.com/
http://www.example.com/foo.html
http://www.example.com/bar.html
Als de ID is ingesteld op URL met de waarde http://www.example.com/foo.html, worden alleen gegevens voor die pagina geretourneerd.
Afmetingen
Dimensies identificeren een specifieke groep gegevens waartegen een record wordt verzameld, bijvoorbeeld een vormfactor van PHONE geeft aan dat de record informatie bevat over belastingen die op een mobiel apparaat hebben plaatsgevonden. Elke dimensie heeft een bepaald aantal waarden. Als u die dimensie niet opgeeft, wordt de dimensie samengevoegd voor alle waarden. Als je bijvoorbeeld geen vormfactor opgeeft, geeft dit aan dat de record informatie bevat over laadacties die hebben plaatsgevonden op een vormfactor.
Vormfactor
De apparaatklasse die de eindgebruiker heeft gebruikt om naar de pagina te navigeren. Dit is een algemene apparaatklasse die is onderverdeeld in PHONE, TABLET en DESKTOP.
Statistiek
We rapporteren rapportagestatistieken als statistische aggregaties, in histogrammen, percentielen en fracties.
Waarden met zwevende komma's worden afgerond op 4 decimalen (de statistieken van cumulative_layout_shift zijn doubles die als tekenreeks zijn gecodeerd, dus worden niet beschouwd als zwevende komma's en worden gerapporteerd op 2 decimalen binnen de tekenreeks).
Histogram
Als statistieken in een histogram worden getoond, tonen we de percentages van paginaloads die in bepaalde bereiken voor die statistiek vallen.
Een histogram met 3 groepen voor een voorbeeldstatistiek ziet er zo uit:
{
"histogram": [
{
"start": 0,
"end": 1000,
"density": 0.3818
},
{
"start": 1000,
"end": 3000,
"density": 0.4991
},
{
"start": 3000,
"density": 0.1192
}
]
}
Deze gegevens geven aan dat voor 38, 18% van de pagina's die worden geladen,de voorbeeldstatistiek is gemeten tussen 0 ms en 1000 ms. De eenheden van de statistiek zijn niet opgenomen in dit histogram. In dit geval gaan we uit van milliseconden.
Daarnaast had 49,91% van de pagina's die werden geladen een statistiekwaarde tussen 1000 ms en 3000 ms en had 11,92% een waarde van meer dan 3000 ms.
Percentielen
Statistieken kunnen ook percentielen bevatten die nuttig kunnen zijn voor aanvullende analyse. We rapporteren specifieke statistische waarden op het aangegeven percentiel voor die statistiek. Ze zijn gebaseerd op de volledige set beschikbare gegevens en niet op de uiteindelijke gebinde gegevens. Ze komen dus niet noodzakelijkerwijs overeen met een geïnterpoleerd percentiel dat is gebaseerd op het uiteindelijke gebinde histogram.
{
"percentiles": {
"p75": 2063
}
}
In dit voorbeeld is minstens 75% van het laden van pagina's gemeten met de statistiekwaarde <= 2063.
Breuken
Breuken geven de percentages van paginaweergaven aan die op een bepaalde manier kunnen worden gelabeld. In dit geval zijn de statistiekwaarden deze labels.
De statistiek form_factors bestaat bijvoorbeeld uit een fractions-object met de uitsplitsing van vormfactoren (of apparaten) die de betreffende query dekt:
"form_factors": {
"fractions": {
"desktop": 0.0377,
"tablet": 0.0288,
"phone": 0.9335
}
}
In dit geval is 3,77% van de pagina's geladen op een desktop, 2,88% op een tablet en 93,35% op een telefoon, wat in totaal 100% oplevert.
Typen statistiekwaarden
| Naam van statistiek voor CrUX API | Gegevenstype | Metrische eenheden | Statistische aggregaties | Documentatie |
|---|---|---|---|---|
cumulative_layout_shift |
Een double met 2 decimalen, dubbel gecodeerd als tekenreeks | zonder eenheid | histogram met 3 bakken, percentielen met p75 | CLS |
interaction_to_next_paint |
int | milliseconden | histogram met 3 klassen, percentielen met p75 | INP |
largest_contentful_paint |
int | milliseconden | histogram met 3 klassen, percentielen met p75 | LCP |
experimental_cumulative_layout_shift_with_softnavs |
Double met 2 decimalen gecodeerd als tekenreeks | zonder eenheid | histogram met 3 klassen, percentielen met p75 | Blog |
experimental_interaction_to_next_paint_with_softnavs |
int | milliseconden | histogram met 3 bakken, percentielen met p75 | Blog |
experimental_largest_contentful_paint_with_softnavs |
int | milliseconden | histogram met 3 klassen, percentielen met p75 | Blog |
first_contentful_paint |
int | milliseconden | histogram met 3 bakken, percentielen met p75 | FCP |
experimental_time_to_first_byte |
int | milliseconden | histogram met 3 bakken, percentielen met p75 | TTFB |
form_factors |
Dubbele waarde met 4 decimalen | procent | toewijzing van vormfactor aan fractie | Vormfactoren |
navigation_types |
Dubbel met 4 decimalen | procent | toewijzing van navigatietype aan fractie | Navigatietypen |
round_trip_time |
int | milliseconden | histogram met 3 klassen, percentielen met p75 | RTT-statistiek |
largest_contentful_paint_resource_type |
Dubbele waarde met 4 decimalen | procent | toewijzing van navigatietype aan fractie | LCP-brontypen |
largest_contentful_paint_image_time_to_first_byte |
int | milliseconden | percentielen met p75 | Subonderdelen van LCP |
largest_contentful_paint_image_resource_load_delay |
int | milliseconden | percentielen met p75 | LCP-subonderdelen |
largest_contentful_paint_image_resource_load_duration |
int | milliseconden | percentielen met p75 | LCP-subonderdelen |
largest_contentful_paint_image_element_render_delay |
int | milliseconden | percentielen met p75 | Subonderdelen van LCP |
experimental_ad_count |
Dubbel item met 2 decimalen | zonder eenheid | alleen p75 | Aantal advertenties |
experimental_ad_density |
Dubbele waarde met 2 decimalen | zonder eenheid | Alleen p75 | Advertentiedichtheid |
experimental_ad_cpu |
int | milliseconden | alleen p75 | Advertentiegewicht: CPU |
experimental_ad_kilobytes |
int | KB | alleen p75 | Advertentiegewicht: netwerk |
Toewijzing van BigQuery-statistieknamen
| Naam van statistiek voor CrUX API | Naam van BigQuery-statistiek |
|---|---|
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 |
N.v.t. |
round_trip_time |
round_trip_time |
largest_contentful_paint_resource_type |
N.v.t. |
largest_contentful_paint_image_time_to_first_byte |
N.v.t. |
largest_contentful_paint_image_resource_load_delay |
N.v.t. |
largest_contentful_paint_image_resource_load_duration |
N.v.t. |
largest_contentful_paint_image_element_render_delay |
N.v.t. |
experimental_ad_count |
N.v.t. |
experimental_ad_density |
N.v.t. |
experimental_ad_cpu |
N.v.t. |
experimental_ad_kilobytes |
N.v.t. |
Verzamelperiode
Sinds oktober 2022 bevat de CrUX API een collectionPeriod-object met de velden firstDate en endDate die de begin- en einddatum van het aggregatievenster vertegenwoordigen. Voorbeeld:
"collectionPeriod": {
"firstDate": {
"year": 2022,
"month": 9,
"day": 12
},
"lastDate": {
"year": 2022,
"month": 10,
"day": 9
}
}
Zo krijgt u meer inzicht in de gegevens en of deze al zijn geüpdatet voor die dag of dat dezelfde gegevens als gisteren worden geretourneerd.
De verzamelperiode is ook beschikbaar in PageSpeed Insights:
Daarnaast toont de collectionPeriod altijd 28 dagen, zelfs als de gegevens niet voor de volledige 28 dagen zijn (bijvoorbeeld als een pagina minder dan 28 dagen geleden is gelanceerd). De collectionPeriod is de periode waarin de CrUX-gegevens zijn verzameld, niet per se de periode die de gegevens vertegenwoordigen.
Voorbeelden van zoekopdrachten
Query's worden ingediend als json-objecten met een POST-verzoek naar https://chromeuxreport.googleapis.com/v1/records:queryRecord?key=[YOUR_API_KEY]" met querygegevens als json-object in de POST-body:
{
"origin": "https://example.com",
"formFactor": "PHONE",
"metrics": [
"largest_contentful_paint",
"experimental_time_to_first_byte"
]
}
Dit kan bijvoorbeeld worden aangeroepen vanuit curl met de volgende opdrachtregel (vervang API_KEY door je sleutel):
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"]}'
Gegevens op paginaniveau zijn beschikbaar via de API door een url-property door te geven in de query in plaats van origin:
{
"url": "https://example.com/page",
"formFactor": "PHONE",
"metrics": [
"largest_contentful_paint",
"experimental_time_to_first_byte"
]
}
Als de property metrics niet is ingesteld, worden alle beschikbare statistieken geretourneerd:
cumulative_layout_shiftfirst_contentful_paintinteraction_to_next_paintlargest_contentful_paintexperimental_time_to_first_bytelargest_contentful_paint_resource_typelargest_contentful_paint_image_time_to_first_bytelargest_contentful_paint_image_resource_load_delaylargest_contentful_paint_image_resource_load_durationlargest_contentful_paint_image_element_render_delaynavigation_typesround_trip_timeform_factors(wordt alleen gerapporteerd als er geenformFactoris ingevoerd in het verzoek)experimental_ad_count(alleen gerapporteerd voor pagina's die zijn opgenomen in advertentiestatistieken)experimental_ad_density(alleen gerapporteerd voor pagina's die zijn opgenomen in advertentiestatistieken)experimental_ad_cpu(alleen gerapporteerd voor pagina's die zijn opgenomen in advertentiestatistieken)experimental_ad_kilobytes(alleen gerapporteerd voor pagina's die zijn opgenomen in advertentiestatistieken)
Als er geen formFactorwaarde is ingevoerd, worden de waarden verzameld voor alle vormfactoren.
Ga naar De Chrome UX Report API gebruiken voor meer voorbeeldquery's.
Gegevenspipeline
De CrUX-dataset wordt verwerkt via een pijplijn om de gegevens samen te voegen, te verzamelen en te filteren voordat ze beschikbaar komen via de API.
Het voortschrijdend gemiddelde
De gegevens in het Chrome UX Report zijn een voortschrijdend gemiddelde over 28 dagen van verzamelde statistieken. Dit betekent dat de gegevens die op een bepaald moment in het Chrome UX Report worden getoond, eigenlijk gegevens zijn van de afgelopen 28 dagen die zijn verzameld.
Dit is vergelijkbaar met de manier waarop de CrUX-dataset op BigQuery maandelijkse rapporten verzamelt.
Dagelijkse updates
De gegevens worden dagelijks rond 04:00 UTC geüpdatet. Er is geen serviceovereenkomst voor updatetijden. De update wordt elke dag op basis van best effort uitgevoerd.
Schema
Er is één eindpunt voor de CrUX API dat POST HTTP-verzoeken accepteert. De API retourneert een record die een of meer metrics bevat die overeenkomen met prestatiegegevens over de gevraagde oorsprong of pagina.
HTTP-verzoek
POST https://chromeuxreport.googleapis.com/v1/records:queryRecord
De URL gebruikt de syntaxis van gRPC-transcodering.
Hoofdtekst van verzoek
De verzoektekst moet gegevens bevatten met de volgende structuur:
{
"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.
}
| Velden | |
|---|---|
formFactor |
De vormfactor is een querydimensie die de apparaatklasse aangeeft waartoe de gegevens van de record moeten behoren. Dit veld gebruikt de waarden Opmerking: Als er geen vormfactor is opgegeven, wordt een speciale record met verzamelde gegevens voor alle vormfactoren geretourneerd. |
metrics[] |
De statistieken die in de reactie moeten worden opgenomen. Als er geen zijn opgegeven, worden alle gevonden statistieken geretourneerd. Toegestane waarden: |
Verenigingsveld url_. De url_pattern is de belangrijkste ID voor een recordzoekopdracht. Dit kan maar een van de volgende zijn: |
|
origin |
De Voorbeelden: |
url |
De Voorbeelden: |
Zo vraag je bijvoorbeeld de Largest Contentful Paint-waarden voor desktop op voor de homepage van de documentatie voor Chrome-ontwikkelaars:
{
"url": "https://developer.chrome.com/docs/",
"formFactor": "DESKTOP",
"metrics": [
"largest_contentful_paint"
]
}
Tekstgedeelte van reactie
Succesvolle verzoeken retourneren reacties met een record-object en urlNormalizationDetails in de volgende structuur:
{
"record": {
"key": {
object (Key)
},
"metrics": [
string: {
object (Metric)
}
]
},
"urlNormalizationDetails": {
object (UrlNormalization)
}
}
De reactie op de verzoektekst in het vorige verzoek kan bijvoorbeeld zijn:
{
"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
}
}
}
}
Sleutel
Key definieert alle dimensies die deze record als uniek identificeren.
{
"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.
}
| Velden | |
|---|---|
formFactor |
De vormfactor is de apparaatklasse die alle gebruikers hebben gebruikt om de site te openen voor deze record. Als de vormfactor niet is opgegeven, worden verzamelde gegevens voor alle vormfactoren geretourneerd. |
Verenigingsveld url_. Het URL-patroon is de URL waarop de record van toepassing is. url_ kan maar een van de volgende waarden hebben: |
|
origin |
Opmerking: Als u een |
url |
Opmerking: Als je een |
Statistieken
Een metric is een set verzamelde gegevens over de gebruikerservaring voor één statistiek voor webprestaties, zoals First Contentful Paint.
Het kan een samenvattend histogram van het Chrome-gebruik in de echte wereld bevatten als een reeks bins, specifieke percentielgegevens (zoals het 75e percentiel) of gelabelde breuken.
{
"histogram": [
{
object (Bin)
}
],
"percentiles": {
object (Percentiles)
}
}
of
{
"fractions": {
object (Fractions)
}
}
| Velden | |
|---|---|
histogram[] |
Het histogram van gebruikerservaringen voor een statistiek. Het histogram heeft minstens één interval en de dichtheden van alle intervallen tellen op tot ~1. |
percentiles |
Veelgebruikte percentielen van de statistiek. Het waardetype voor de percentielen is hetzelfde als de waardetypen die zijn opgegeven voor de histogramgroepen. |
fractions |
Dit object bevat gelabelde fracties die samen ongeveer 1 zijn. Breuken worden afgerond op 4 decimalen. |
Ruimte
Een bin is een afzonderlijk deel van de gegevens dat loopt van begin tot eind, of als er geen einde is aangegeven, van begin tot oneindig.
De begin- en eindwaarden van een bak worden gegeven in het waardetype van de statistiek die de bak vertegenwoordigt. De eerste weergave met content wordt bijvoorbeeld gemeten in milliseconden en weergegeven als gehele getallen. Daarom gebruiken de statistiekbakken int32's voor de begin- en eindtypen. Cumulatieve lay-outverschuiving wordt gemeten in eenheidsloze decimalen en wordt getoond als een decimaal getal dat is gecodeerd als een tekenreeks. Daarom gebruiken de statistiekbakken tekenreeksen voor het waardetype.
{
"start": value,
"end": value,
"density": number
}
| Velden | |
|---|---|
start |
Start is het begin van de gegevensbak. |
end |
Einde is het einde van de gegevensbak. Als er geen einddatum is ingevuld, heeft de container geen einddatum en is deze geldig van de startdatum tot +inf. |
density |
Het percentage gebruikers dat de waarde van deze bin heeft ervaren voor de gegeven statistiek. Dichtheden worden afgerond op 4 decimalen. |
Percentielen
Percentiles bevat synthetische waarden van een statistiek op een bepaald statistisch percentiel. Deze worden gebruikt om de waarde van een statistiek te schatten zoals die wordt ervaren door een percentage van de gebruikers van het totale aantal gebruikers.
{
"P75": value
}
| Velden | |
|---|---|
p75 |
75% van de pagina's die zijn geladen, had de aangegeven statistiek op of onder deze waarde. |
Breuken
Fractions bevat gelabelde breuken die samen ongeveer 1 zijn. Elk label beschrijft een pagina-laadtijd op een bepaalde manier. Statistieken die op deze manier worden getoond, kunnen dus worden beschouwd als het produceren van afzonderlijke waarden in plaats van numerieke waarden. De breuken geven aan hoe vaak een bepaalde afzonderlijke waarde is gemeten.
{
"label_1": fraction,
"label_2": fraction,
...
"label_n": fraction
}
Net als de dichtheidswaarden in histogramklassen is elke fraction een getal
0.0 <= value <= 1.0 en is de som ongeveer 1,0.
UrlNormalization
Object dat de normalisatieacties vertegenwoordigt die zijn uitgevoerd om een URL te normaliseren en de kans op een geslaagde zoekopdracht te vergroten. Dit zijn basiswijzigingen die automatisch worden doorgevoerd als we weten dat het opzoeken van de verstrekte url_pattern mislukt. Complexe acties, zoals het volgen van omleidingen, worden niet verwerkt.
{
"originalUrl": string,
"normalizedUrl": string
}
| Velden | |
|---|---|
originalUrl |
De oorspronkelijke gevraagde URL vóór normalisatieacties. |
normalizedUrl |
De URL na eventuele normalisatieacties. Dit is een geldige URL voor de gebruikerservaring die redelijkerwijs kan worden opgezocht. |
Tarieflimieten
De CrUX API is beperkt tot 150 query's per minuut per Google Cloud-project. Deze wordt kosteloos aangeboden. Deze limiet en je huidige gebruik vind je in de Google Cloud Console. Dit ruime quotum is voldoende voor de meeste toepassingen. Het is niet mogelijk om te betalen voor een hoger quotum.