---
title: "GitHub Actions Runner Pricing and Workload Cost | 9apes"
description: "Check 9apes runner rates and estimate workload cost. Compare remaining free minutes, billed runtime, runner sizes, and fees before switching CI providers."
url: https://9apes.com/pricing/
---

# GitHub Actions Runner Pricing and Workload Cost | 9apes

Every 9apes runner is billed per minute, with 3000 free runner minutes every month. No seats, no minimums, no annual commitment, and no card required to start.

## Rate card

### Linux x86_64 runners

| `runs-on` label | vCPU | RAM | Architecture | OS | OS version | 9apes price/min | GitHub-hosted price/min |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `9apes-1vcpu-ubuntu-2404` | 1 | 4 GB | x86_64 | Ubuntu | 24.04 | $0.0009 | $0.002 |
| `9apes-2vcpu-ubuntu-2404` | 2 | 8 GB | x86_64 | Ubuntu | 24.04 | $0.0018 | $0.006 |
| `9apes` | 4 | 16 GB | x86_64 | Ubuntu | 24.04 | $0.0036 | $0.012 |
| `9apes-4vcpu-ubuntu-2404` | 4 | 16 GB | x86_64 | Ubuntu | 24.04 | $0.0036 | $0.012 |
| `9apes-8vcpu-ubuntu-2404` | 8 | 32 GB | x86_64 | Ubuntu | 24.04 | $0.0072 | $0.022 |

Start with `9apes` (4 vCPU, 16 GB) and size up only when a job needs it.

## 3,000 free runner minutes every month

The allowance resets monthly and applies to any label. Paid usage is calculated after the free minutes and charged at the end of the month. Figures below use `9apes` at $0.0036/min.

| Minutes / month | GitHub-hosted | 9apes | You keep |
| --- | --- | --- | --- |
| 3,000 | $36.00 | $0.00 | $36.00 (100%) |
| 5,000 | $60.00 | $7.20 | $52.80 (88%) |
| 10,000 | $120.00 | $25.20 | $94.80 (79%) |
| 20,000 | $240.00 | $61.20 | $178.80 (75%) |

Two different savings appear on this page and they measure different things. The rate card runs up to 70% below GitHub-hosted list prices per minute. The table above compounds that with the free allowance, which is why the percentage moves with volume. Neither figure models differences in job duration. Measure your workload on each runner before projecting a change in billable minutes.

## When does switching GitHub Actions runners save money?

Switching saves money when the replacement's cost for the same successful workload is lower after included usage, billed runtime, retries, and additional fees. Compare the allowance still available to the account, rather than assuming every minute is paid. A lower per-minute rate may not lower the bill if the current jobs use standard GitHub-hosted runners covered by an allowance or run free in public repositories. GitHub larger runners are billed even for public repositories and cannot use included minutes.

For each provider, use the plan's actual billing rules:

```text
monthly cost = billable usage after applicable allowances
               + plan and platform fees
               + storage, network, and other applicable charges
```

```text
cost per successful workflow = total cost of all attempts
                               / successful workflow outcomes
```

Include failed and canceled attempts in cost. If jobs run in parallel, distinguish total billable job usage from elapsed workflow time. Measure the new runner's duration before projecting monthly savings.

[Benchmark report and timing boundaries](https://9apes.com/benchmarks/)

[Choose a managed GitHub Actions runner](https://9apes.com/blog/managed-github-actions-runners/)

[Reduce GitHub Actions build times](https://9apes.com/blog/reduce-github-actions-build-times/)

## How billing works

1. Install the 9apes GitHub App and move a job to a 9apes runner label.

2. Jobs run on 9apes and consume runner minutes.

3. Each month includes 3,000 free runner minutes.

4. Any paid usage is charged at the end of the month.

## Pricing questions

**How many free minutes do I get?**

3000 runner minutes every month, on every account. They reset monthly and apply to any runner label. You only pay for minutes beyond that.

**Do I need a credit card to start?**

No. Install the GitHub App, point a job at a 9apes label, and run. Billing details are only needed once you go past the free minutes.

**What am I actually paying for?**

Runner minutes your jobs consume. Unlike a self-hosted fleet, you do not pay for capacity sitting idle between jobs. You pay only for the minutes a job is running.

**When am I billed?**

Usage accumulates through the month and is charged at the end of it. Paid usage is calculated after the free minutes. There are no seats to buy and no minimum spend.

**Where do I review usage?**

The 9apes dashboard shows usage by organization and by repository, so you can see which workflows are consuming runner minutes before the month closes.

**What happens if I stop using 9apes?**

Change the runs-on label back to ubuntu-latest and the next run goes to GitHub-hosted runners. There is no contract to exit and nothing to migrate off.

**Why is the saving on a job larger than the saving on the rate card?**

The rate card runs up to 70 percent below GitHub-hosted list prices. Monthly examples also apply the 9apes free allowance, so their percentage savings depend on volume. Runtime can change workload cost further, but measure your own complete job before projecting that effect.

**Is the cheapest runner minute always the cheapest build?**

No. A slower job can consume more paid time, and a larger runner can cost more without improving a network-bound workload. Compare equivalent CPU and memory where possible, then measure representative complete jobs. The benchmark report explains the narrower build-step timing used in its existing results.

## Related pages

- [Available Runners](https://9apes.com/docs/available-runners/) — exact labels and per-minute prices

- [Pricing and Billing Basics](https://9apes.com/docs/pricing-billing/) — billing mechanics in the docs

- [Quick Start](https://9apes.com/docs/quick-start/) — move your first job
