Measure Cursor AI Usage with Worklytics

Explore example insights

How to Export & Analyze Cursor Usage Data

Guide to pulling Cursor session and acceptance data for analysis.

TL;DR

  • Cursor gives you four ways to get usage data out: the dashboard CSV export (capped at 10 users and 90 days), the Admin API (per-user-per-day JSON plus billing and audit logs), the newer Analytics API (dedicated metric endpoints for tabs, agent edits, and active users), and an OpenTelemetry stream on Enterprise plans.
  • For a pipeline, the Admin API /teams/daily-usage-data endpoint returns the most detailed rows: tabs shown and accepted, lines added and accepted, applies and accepts, and requests split by composer, chat, and agent, per user per day.
  • Acceptance rate is accepted divided by shown, but the same behavior comes out as 30 percent or 65 percent depending on whether you count suggestions or characters, and Cursor now reports tab acceptance and agent-edit acceptance separately. Pick one method and keep it across every report.
  • An export only ever describes Cursor. Worklytics measures the same data for every other AI tool in the company, so adoption, engagement, and impact are on one scale instead of one dashboard per vendor.
  • Raw exports do not separate real time saved from the rework AI-written code creates. Net the two before a number reaches leadership

Cursor tracks a lot about how your team actually works: tab acceptances, lines applied, requests by mode, spend by model. Getting that data out, and turning it into something an engineering leader can act on, are two separate problems. Below is where to get the data, how to export it through the dashboard and the two APIs, how to calculate the metrics people actually ask for, and where a single-tool export stops answering the question that matters.

Where to get Cursor usage data: dashboard, Admin API, Analytics API, and OpenTelemetry

Cursor exposes usage data through four channels, and each answers a different question. The web dashboard is built for a quick read: charts you can scan and export one at a time. The Admin API returns per-user-per-day rows plus billing and audit data as JSON you pull on a schedule. The Analytics API is newer and narrower: dedicated endpoints for specific metrics like tab completions, agent edits, and daily active users. OpenTelemetry export, in beta on Enterprise, streams metrics and logs to a collector you run, which matters if platform or security engineering already has an observability stack Cursor should report into.

ChannelFormatBest forLimitDashboardCSV per chartSpot checks, monthly reviews10 users, 90 daysAdmin APIJSON (POST)Warehousing raw rows, billing, audit30-day window per call, rate limitedAnalytics APIJSON (GET)Prebuilt metrics, acceptance, DAUEnterprise, 30-day window per callOpenTelemetryMetrics + logs streamExisting observability stacksEnterprise, beta

Pick the channel by what happens to the data next. A one-time export for a review is a dashboard job. Metrics you refresh often fit the Analytics API. Anything that needs to be joined with other systems of record, spend, HR data, delivery metrics, belongs in raw Admin API rows in your own warehouse.

Diagram showing Cursor and other AI tools such as ChatGPT, Gemini, Claude, Copilot, and Slack flowing into an anonymized, cleaned dataset that outputs analyses, dashboards, and exports to data warehouses like Snowflake, BigQuery, Redshift, and S3
Getting the data out is step one; where it goes next is step two. Cursor is one source among many, and its exported usage can feed your own data warehouse or a single cross-tool analysis. Worklytics is shown here as the layer that anonymizes and combines those sources.

How to export Cursor usage data from the dashboard

The fastest export needs no code. Following Cursor's Usage Analytics documentation, a Team or Enterprise admin can pull a CSV in four steps

  1. Open the Cursor web dashboard at cursor.com/dashboard and go to Settings, then Team, then Usage.
  2. Set the header filter for the users, directory groups, and date range you want, up to 10 users and 90 continuous days per view.
  3. For a single chart, click the download button in its bottom-right corner to export the visible data as CSV.
  4. For everything at once, click the download icon in the page header to export all charts togeth

The dashboard reports AI share of committed code, agent edits, tab completions, messages sent, active users, a usage leaderboard, and repository insights at the team and per-user level. On Enterprise, Conversation Insights also classifies each agent session by the kind of work it did, such as bug fixing, new features, or refactoring, all scored on-device.

Two limits are easy to miss. Analytics data is collected only from users on client version 1.5 or higher, so a team running older Cursor builds sees usage undercounted with no error to flag it. And the 10-user filter means a company-wide CSV pull is a manual, repeated export once headcount passes single digits, not a single click.

How to export Cursor usage data with the Admin API

The Admin API authenticates with basic auth, using a team admin's API key as the username, generated from Cursor Dashboard, API Keys. Most Admin API endpoints are an Enterprise-tier capability, so confirm which your plan unlocks before building against all of them.

Three endpoints cover most needs:

  1. /teams/daily-usage-data (POST, 20 requests/minute). Takes startDate and endDate as epoch milliseconds, capped at a 30-day range per call. Returns, per user per day: totalTabsShown, totalTabsAccepted, totalLinesAdded, acceptedLinesAdded, totalApplies, totalAccepts, totalRejects, composerRequests, chatRequests, agentRequests, mostUsedModel, clientVersion, and isActive, alongside the user's email.
  2. /teams/filtered-usage-events (POST, 60 requests/minute). Event-level detail: timestamp, model, request kind, token usage, and chargedCents, filterable by user, service account, or cloud agent. This is the layer that reconciles exactly against /teams/spend.
  3. /teams/spend (POST). Per-user spendCents, fastPremiumRequests, and configured spend limits, useful for pairing usage volume with what it actually cost.

curl https://api.cursor.com/teams/daily-usage-data \
-u YOUR_API_KEY: \
-H "Content-Type: application/json" \
-d '{"startDate": 1735689600000, "endDate": 1738368000000}'

Run the curl examples in this guide in a Unix-style shell: macOS Terminal, Linux, or on Windows either Git Bash or WSL. The \ line breaks and single-quoted JSON do not work as-is in Windows PowerShell or Command Prompt, and the plain curl name in PowerShell points at a different tool. In PowerShell, put the request on one line and call curl.exe:

curl.exe https://api.cursor.com/teams/daily-usage-data -u YOUR_API_KEY: -H "Content-Type: application/json" -d '{"startDate": 1735689600000, "endDate": 1738368000000}'

Keep the colon after YOUR_API_KEY, which sends the key as the username with an empty password, and swap in a real Enterprise admin key.

Because daily-usage-data caps at 30 days, a full quarter means three sequential calls, not one. Two details matter before you build the job: by default the endpoint returns only active users, so pass page and pageSize to page through every team member, and because Cursor aggregates this data hourly, polling more than once an hour adds nothing. Store the raw JSON in a warehouse table keyed by user and day, and then the 30-day cap only sets how often the job runs. A separate /teams/audit-logs endpoint (GET, 20 requests/minute, 30-day cap) returns IP address and event type per action for security review. The Cursor community forum is worth checking before you build the pipeline; several teams have documented the endpoint's edge cases, including gaps in lines-added reporting on certain client versions.

How to export Cursor usage data with the Analytics API

The Analytics API is the newer option built for metrics rather than raw rows. It uses GET requests to api.cursor.com/analytics/, an admin-scoped key with admin:* access, and is Enterprise-only. Team-level endpoints allow 100 requests per minute, by-user endpoints allow 50, and every call is capped at a 30-day range. Dates accept plain formats and shortcuts like 7d, today, or yesterday, and large teams page through results at up to 500 users per page.

Each metric has its own endpoint, so you pull exactly the number you need instead of computing it from raw rows:

EndpointWhat it returns/team/agent-editsSuggested and accepted diffs and lines from AI edits/team/tabsTab autocomplete shown and accepted/team/dauDaily active user counts/team/modelsModel usage breakdown/team/leaderboardUser ranking by AI usage/team/conversation-insightsAggregate conversation analysiscurl "https://api.cursor.com/analytics/team/agent-edits?startDate=30d&endDate=today" \
-u YOUR_API_KEY:

Every team endpoint has a /analytics/by-user/ twin that returns the same metric per person. The practical split: use the Analytics API when you want a clean acceptance or active-user number on a dashboard, and the Admin API when you want the raw per-user-per-day rows to join against spend, delivery, or HR data in your own warehouse.

Exporting all of this is the easy part. The harder question is what to measure. It helps to sort the metrics into three stages: how many people use Cursor, how much of their work it touches, and whether they actually get more done. The rest of this guide follows that order.

Worklytics three-stage model for measuring AI: adoption (uptake), proficiency (how much work is aided by AI), and leverage (productivity gains)
Worklytics sorts AI measurement into three stages: adoption (how many people use it), proficiency (how much of the work it touches), and leverage (whether output actually rises). Acceptance rate and the other export metrics feed the first two stages.

How to calculate Cursor acceptance rate and other core metrics

Acceptance rate is totalTabsAccepted divided by totalTabsShown, or acceptedLinesAdded divided by totalLinesAdded if you measure at the line level instead of the suggestion level. Those two denominators do not agree, and that is the problem: a suggestion-level rate and a character-level rate describe the same usage but give different numbers. Cursor now also reports tab acceptance and agent-edit acceptance separately, so the Analytics API /team/agent-edits endpoint gives accepted diffs over suggested diffs, a third number again. The same behavior can come out as 30 percent or 65 percent depending on which of these you pick.

Pick one method, document it once, and never let a report mix them. A team whose accepted-lines rate climbs from 30 percent to 45 percent while its tabs-accepted rate stays flat is not improving, it is writing longer accepted suggestions, which is a different finding entirely. Vendor-reported acceptance figures tend to be higher because they are often computed differently than your own data will show, so check how any published rate was calculated before you compare against it.

Worklytics proficiency report showing a coding assistant's contribution to committed code ranging from 7% on one team to 26% on another inside the same company
Illustrative sample report. The same pattern appears on any single coding assistant: contribution to committed code has ranged from 7 percent to 26 percent across teams inside one company on identical licenses. A team-level acceptance number needs this kind of breakdown to mean anything.

How to see who is actually using Cursor across every AI tool you run

An exported CSV or API response only ever describes Cursor. Most engineering orgs also run Copilot, Claude Code, or an internal agent framework, and none of those tools' native dashboards knows the others exist. Comparing Cursor spend to Cursor value on its own hides the real question, which is where the next license dollar does the most good.

Worklytics reads AI usage across every assistant in one place, so Cursor appears alongside Copilot, Claude, ChatGPT, and Gemini rather than on its own. Its activation rate, the share of licensed engineers who have used a tool at least once, is measured the same way as every other tool, so a Cursor rollout that looks healthy on its own dashboard can still be the one falling behind once it is ranked against the other tools. A deeper walkthrough of what Cursor's own analytics can and cannot answer is in tracking how employees utilize Cursor AI.

Worklytics report showing which teams use which AI tools, comparing coding assistants and other AI tools side by side across the organization

Illustrative sample report. Cursor adoption looks different once it is shown next to every other tool a team can use, rather than alone in its own export.

How to measure Cursor engagement, not just whether it is switched on

Activation tells you someone opened Cursor once. Engagement tells you whether people kept using it, and that is the number tied to renewal value. The Admin API's isActive flag and the Analytics API's /team/dau endpoint give you daily active counts, but a raw export will not tell you how that use breaks down: how many people are weekly-active versus one-time, which teams are power users versus occasional users, and which departments have stalled after an early rise.

Worklytics separates active usage frequency, power-user distribution, and adoption laggards as distinct measures, so a flat company-wide average splits into the teams keeping it high and the ones that stopped using it after week two. That distinction changes the action: a team with high activation but low weekly use has a habit problem, not an access problem, and the fix is training and support, not more seats.

Worklytics report showing how intensively each group uses AI on the days they use it, separating power users from occasional users
Illustrative sample report. Usage intensity per active day separates teams that have built a Cursor habit from teams that open it occasionally, which a raw active-user count hides.

How to see what kind of work Cursor is doing, not just how much

Volume metrics miss what matters most to an engineering leader: what the AI is actually used for. Cursor's Conversation Insights scores each agent session by work type, such as bug fixing, new features, refactoring, and testing, all on-device. That answers the question inside Cursor. It does not answer it for Copilot, Claude Code, or ChatGPT running alongside it. Worklytics classifies AI activity into the same kind of work categories across every tool, so a leader can see whether AI effort is concentrated on routine maintenance or on new product work company-wide, not one tool at a time.

Worklytics report classifying AI activity into work categories such as coding, drafting, research, and analysis across multiple tools
Illustrative sample report. Classifying AI activity by type of work shows whether coding assistants are used for maintenance or for new features, a view Cursor's own export holds only for Cursor.

How to measure whether Cursor is actually improving engineering output

Adoption and output are not the same measurement, and an export that stops at tab-accepts never measures output. Worklytics has observed engineers with heavy AI use merging 6.86 pull requests a month against 4.67 for light users, a 47 percent lift, and that number looks good until you check it against rework.

Worklytics report showing engineers using generative AI push 10 to 30 percent more code than peers who do not
Illustrative sample report. Higher code volume is the good news, and the part a Cursor export can show. Output quality is the other part it cannot.

After one team's coding-assistant rollout, monthly PR reverts climbed from around 4 to 17 as reviewers absorbed more machine-written code. Net time saved is gross output gained minus the hours rework and slower reviews add back, and pairing Cursor's usage data with DORA delivery metrics is what keeps that subtraction visible instead of hidden in a raw export.

Worklytics report showing PR revert rate rising after a coding assistant rollout, illustrating why net output must subtract rework
Illustrative sample report. Reverts climbed after rollout in this deployment. Cursor's own export has no field for this, which is why usage data needs to be read together with delivery data, not on its own.

How to benchmark Cursor adoption and coach the managers behind it

A usage number means more once you know whether it is good. Cursor's export has no peer context, so a 40 percent acceptance rate or a 60 percent weekly-active figure has nothing to compare against. Worklytics pairs an org's internal trend against peer benchmarks, so adoption shows as a percentile against comparable companies. In one example, an org was near the 35th percentile on total AI adoption and the 20th on weekly usage, yet reached the 85th percentile on AI use inside engineering specifically, a result exported Cursor data alone would never show.

Worklytics benchmark report comparing an organization's AI adoption, weekly usage, and engineering AI use against peer percentiles
Illustrative sample report. Benchmarks turn a raw Cursor adoption rate into a percentile, so leaders know whether uptake is ahead of or behind peer organizations.

Benchmarks show where the gap is; managers are how it closes. Team adoption tracks closely with whether a team's manager uses AI visibly and asks about it in one-to-ones, making manager behavior an early signal of team adoption three to four weeks ahead. Worklytics shows this through manager-level AI adoption KPIs, so coaching aims at the specific managers whose teams have stalled on Cursor rather than a broadcast email to everyone.

Worklytics data showing manager AI use as an early signal of team AI adoption three to four weeks later
Illustrative sample report. Manager AI use leads team adoption by three to four weeks, a coaching signal no Cursor export contains on its own.

How to keep Cursor usage exports privacy-compliant

The Admin API's daily-usage-data response includes an email address on every row, and audit logs record IP addresses alongside individual actions. Pulling that into a warehouse for aggregate reporting is routine, but it puts personally identifiable data on a new system the moment it lands, which means access controls and retention rules have to apply to the export too, not only to Cursor's own copy.

Worklytics is designed for this: usage metadata is aggregated and de-identified before it reaches a report, so adoption, engagement, and proficiency read at the team or role level without naming individuals or storing prompt content.

Diagram of Worklytics' privacy-preserving data architecture showing de-identification before usage data reaches a report
Usage data is de-identified before it reaches a dashboard, so a company-wide Cursor rollup does not require exposing who used what.

Turn a Cursor export into a company-wide answer

You pulled the numbers. The real questions are whether Cursor earns its seats, how your adoption compares to peers, and which teams have stalled. Worklytics measures Cursor alongside Copilot, Claude, ChatGPT, and Gemini and rolls adoption, engagement, and real output into one view, aggregated and anonymous, instead of one dashboard per tool.

Frequently asked questions

What Cursor usage data can I export?

Tab suggestions shown and accepted, lines added and accepted, applies, accepts and rejects, requests split by composer, chat, and agent mode, model used, client version, spend by user, and audit log events. The dashboard exports a subset as CSV; the Admin API returns the full field set as JSON; the Analytics API returns prebuilt metrics like tabs, agent edits, and daily active users.

Does Cursor have a CSV export?

Yes, from the web dashboard. Each chart has its own download button, and a header icon exports every chart at once, limited to 10 users and 90 days of history per pull.

What is the difference between the Cursor Admin API and Analytics API?

The Admin API returns raw per-user-per-day rows plus billing and audit data over POST, best for warehousing and joining against other systems. The Analytics API returns prebuilt metrics over GET, one endpoint per number like tab acceptance or daily active users, best for dashboards. Both are Enterprise-tier and cap date ranges at 30 days per call.

What is the Cursor Admin API rate limit?

/teams/daily-usage-data and audit logs allow 20 requests per minute per team; /teams/filtered-usage-events allows 60. On the Analytics API, team-level endpoints allow 100 per minute and by-user endpoints allow 50. Date ranges cap at 30 days per call across both.

How do I calculate Cursor tab acceptance rate?

Divide totalTabsAccepted by totalTabsShown for a suggestion-level rate, or acceptedLinesAdded by totalLinesAdded for a character-level rate. Agent-edit acceptance is reported separately as accepted diffs over suggested diffs. All three produce different numbers for identical behavior, so pick one and keep it consistent across every report.

Can I combine Cursor data with other AI tool usage?

Not natively. Cursor's dashboard and APIs only report on Cursor. Worklytics ingests usage data from Cursor alongside Copilot, Claude, ChatGPT, and other workplace AI tools, so adoption, engagement, and impact are measured on one scale across the whole company.

Is Cursor usage data export available on all plans?

Dashboard analytics and CSV export are available to Team and Enterprise admins. Programmatic access through the Admin API and Analytics API, including audit logs and code-tracking endpoints, is generally an Enterprise-tier capability, so check current plan documentation for exact key availability.

Exporting Cursor's own numbers answers what happened inside one tool. It does not answer whether that tool is worth the seats, how it compares to peers, or which managers need coaching to close the gap. See how Worklytics measures AI adoption, engagement, and impact across every tool your company runs, so a Cursor export becomes one input into a company-wide answer instead of the whole answer.

Request a demo

Schedule a demo with our team to learn how Worklytics can help your organization.

Book a Demo