REST API endpoints for GitHub Marketplace

Use the REST API to interact with GitHub Marketplace

About GitHub Marketplace

For more information about GitHub Marketplace, see GitHub Marketplace.

These endpoints allow you to see which customers are using a pricing plan, see a customer's purchases, and see if an account has an active subscription.

Testing with stubbed endpoints

You can test your GitHub App with stubbed data. Stubbed data is hard-coded, fake data that will not change based on actual subscriptions.

To test with stubbed data, use a stubbed endpoint in place of its production counterpart. This allows you to test whether the API logic succeeds before listing GitHub Apps on GitHub Marketplace.

Make sure to replace stubbed endpoints with production endpoints before deploying your GitHub App.

Note

Most endpoints use Authorization: Bearer <YOUR-TOKEN> and Accept: application/vnd.github+json headers, plus X-GitHub-Api-Version: 2026-03-10. Curl examples below omit these standard headers for brevity.

Get a subscription plan for an account

GET /marketplace_listing/accounts/{account_id}

Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/accounts/ACCOUNT_ID

Response schema (Status: 200):

List plans

GET /marketplace_listing/plans

Lists all plans that are part of your GitHub Marketplace listing.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/plans

Response schema (Status: 200):

Array of Marketplace Listing Plan:

List accounts for a plan

GET /marketplace_listing/plans/{plan_id}/accounts

Returns user and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/plans/PLAN_ID/accounts

Response schema (Status: 200):

Array of Marketplace Purchase:

Get a subscription plan for an account (stubbed)

GET /marketplace_listing/stubbed/accounts/{account_id}

Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/stubbed/accounts/ACCOUNT_ID

Response schema (Status: 200):

Same response schema as Get a subscription plan for an account.

List plans (stubbed)

GET /marketplace_listing/stubbed/plans

Lists all plans that are part of your GitHub Marketplace listing.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/stubbed/plans

Response schema (Status: 200):

Same response schema as List plans.

List accounts for a plan (stubbed)

GET /marketplace_listing/stubbed/plans/{plan_id}/accounts

Returns repository and organization accounts associated with the specified plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
GitHub Apps must use a JWT to access this endpoint. OAuth apps must use basic authentication with their client ID and client secret to access this endpoint.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/marketplace_listing/stubbed/plans/PLAN_ID/accounts

Response schema (Status: 200):

Same response schema as List accounts for a plan.

List subscriptions for the authenticated user

GET /user/marketplace_purchases

Lists the active subscriptions for the authenticated user.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/user/marketplace_purchases

Response schema (Status: 200):

Array of User Marketplace Purchase:

List subscriptions for the authenticated user (stubbed)

GET /user/marketplace_purchases/stubbed

Lists the active subscriptions for the authenticated user.

Parameters

Headers

Path and query parameters

HTTP response status codes

Code examples

Example

Request:

curl -L \
  -X GET \
  https://api.github.com/user/marketplace_purchases/stubbed

Response schema (Status: 200):

Same response schema as List subscriptions for the authenticated user.