Developer docs

Get speed results

GET/sites/{siteId}/performance
Scope
sites:read

Speed per tested page, lab and real visitors One representative page per template. lab is PageSpeed Insights (mobile median of the latest speed test). field is real Chrome visitors over 28 days (75th percentile, phone): the page's own record, else the whole site's; null when Google has no data. findingsUse says which number each speed finding uses.

Parameters

NameInDetails
siteIdRequiredpathstringWebsite id, from GET /sites.

Response

200 · application/json

FieldDetails
siteobject · required; Chrome UX Report for the whole site; null when never asked
site.phoneobject · required
site.phone.availabletrue or false
site.phone.reason
site.phone.lcpMsnumber
site.phone.inpMsnumber
site.phone.clsnumber
site.phone.periodEndstring
site.phone.collectedAtstring
site.desktopobject · required
site.desktop.availabletrue or false
site.desktop.reasonstring
site.desktop.lcpMs
site.desktop.inpMs
site.desktop.cls
site.desktop.periodEnd
site.desktop.collectedAtstring
pageslist of object · required
pages[].urladdress (URL) · required; Tested page
pages[].templatestring · required; Page template it stands for
pages[].testedAtstring or null · required
pages[].lighthouseVersionstring or null · required
pages[].labobject · required
pages[].lab.lcpMsnumber or null · required; Largest Contentful Paint, ms (median of the runs)
pages[].lab.clsnumber or null · required; Cumulative Layout Shift
pages[].lab.runsinteger · required; Runs in the median
pages[].lab.desktopLcpMsnumber or null · required; Desktop LCP of the same template, ms
pages[].fieldobject or null · required; Real visitors; null when Google has no data
pages[].field.scopepage | site · required; The page's own record or the whole site's
pages[].field.lcpMsnumber or null · required
pages[].field.inpMsnumber or null · required; Interaction to Next Paint, ms
pages[].field.clsnumber or null · required
pages[].field.periodEnddate (YYYY-MM-DD) or null · required
pages[].findingsUseobject · required; Which number each speed finding uses
pages[].findingsUse.lcpfield_page | field_site | lab | · required
pages[].findingsUse.clsfield_page | field_site | lab | · required
pages[].findingsUse.inpfield_page | · required
budgetobject · required
budget.perDayinteger · required; PageSpeed runs per day
budget.usedTodayinteger · required; Used in the last 24 hours
budget.leftinteger · required; Left now
budget.nextFreeAtstring or null · required; When a run frees up; null when some are left
notestring · required; How to read the numbers
linkaddress (URL) · required; Speed screen in the app

Errors

StatusMeaning
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too many requests this hour for this key. Codes: rate_limited.

Example request

curl \
  -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/performance"

Example response

{
  "site": {
    "phone": {
      "available": true,
      "reason": null,
      "lcpMs": 2300,
      "inpMs": 180,
      "cls": 0.04,
      "periodEnd": "2026-10-03",
      "collectedAt": "2026-10-05T03:00:12.000Z"
    },
    "desktop": {
      "available": false,
      "reason": "not_enough_data",
      "lcpMs": null,
      "inpMs": null,
      "cls": null,
      "periodEnd": null,
      "collectedAt": "2026-10-05T03:00:13.000Z"
    }
  },
  "pages": [
    {
      "url": "https://acmebikes.com/bikes/gravel/",
      "template": "product-category",
      "testedAt": "2026-10-05T03:10:44.000Z",
      "lighthouseVersion": "12.8.2",
      "lab": {
        "lcpMs": 3120,
        "cls": 0.02,
        "runs": 3,
        "desktopLcpMs": 1240
      },
      "field": {
        "scope": "site",
        "lcpMs": 2300,
        "inpMs": 180,
        "cls": 0.04,
        "periodEnd": "2026-10-03"
      },
      "findingsUse": {
        "lcp": "field_site",
        "cls": "lab",
        "inp": null
      }
    }
  ],
  "budget": {
    "perDay": 20,
    "usedToday": 6,
    "left": 14,
    "nextFreeAt": null
  },
  "note": "Speed of one representative page per template.",
  "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/performance"
}

The MCP server does the same with the tool speed_results.