Homebrew

App · Code Repositories · 15 actions

Read the package manager most Mac developers install software with. Search all 8,500 formulae and 7,700 casks by name, description or the commands they provide, and get any package's version, licence, homepage, download and checksum - with aliases and renames resolved the way brew resolves them, so 'openssl' finds openssl@3. Walk a formula's dependencies as far as you like, with Homebrew's own per-platform overrides applied, or turn it around and see everything that depends on it before a library is deprecated. Check which platforms have a prebuilt binary, list what a cask puts on disk and what removing it takes away, and pull the whole deprecated-and-disabled list with each package's reason, deadline and replacement. Read the install charts behind 'brew info --analytics' for what developers are actually adopting, or count a shortlist of packages on a schedule. Every action reads: nothing here changes anything, and nothing here touches your machine. No account or API key required.

Actions

ActionWhat it does
Find a packageLook one name up as both a formula and a cask, and say how to install whatever Homebrew has.
Get a caskGet everything Homebrew publishes about one cask: the version it ships, where the download comes from and its checksum, the macOS releases and architectures it runs on, what it needs installed first, what it conflicts with, whether it updates itself, whether it is deprecated and what to use instead - and how many times it has been installed over the last 30, 90 and 365 days.
Get a formulaGet everything Homebrew publishes about one formula: what it is, the version it ships, its licence, its homepage, the commands it puts on your PATH, whether a prebuilt binary exists and for which platforms, whether it is deprecated and what to use instead - and how many times it has been installed over the last 30, 90 and 365 days.
Get a summary of HomebrewGet Homebrew's own totals in one step: how many formulae and casks it publishes, how many of each are deprecated or disabled, how many formulae ship a prebuilt binary, how many casks update themselves - and how many install events the period saw on each side.
Get casks' install countsGet install counts for a set of casks at once, with the window's total alongside so a number can be read as a share rather than on its own.
Get formulae's install countsGet install counts for a set of formulae at once, broken down by how they were installed.
List a formula's dependenciesList what a formula depends on.
List a formula's prebuilt binariesList the prebuilt binaries - bottles - a formula publishes, one per platform, each with its download URL and SHA-256.
List deprecated and disabled packagesList everything Homebrew has deprecated or disabled, with why and what to use instead.
List the most-installed casksRead Homebrew's cask install chart: which apps and prebuilt tools developers actually install on their Macs, ranked, with the count and the share of all cask installs behind each.
List the most-installed formulaeRead Homebrew's install chart: which formulae developers actually install, ranked, with the count and the share of all installs behind each.
List what a cask installsList what a cask actually puts on the machine, and what taking it off again removes: the app bundle and where it lands, the commands it symlinks onto PATH, the packages it runs, the fonts it drops in, the processes uninstalling quits and the files a full zap deletes.
List what depends on a formulaList everything in Homebrew that depends on a formula - both the formulae that need it and the casks that require it.
Search casksSearch every cask Homebrew installs - the macOS apps, fonts and prebuilt downloads, 7,700 of them.
Search formulaeSearch every formula Homebrew installs - the command-line half of Homebrew, 8,500 packages and counting.

Find a package

Look one name up as both a formula and a cask, and say how to install whatever Homebrew has. Homebrew's two halves are installed with different commands and a name can be in either or both - 'docker' is a formula for the CLI and an old token for the Docker Desktop cask - so this asks both questions at once and hands back the exact command. Aliases and old tokens resolve the way brew resolves them on both sides. The step to use when a workflow has a name from somewhere else and needs to know whether Homebrew can install it. No account or API key required.

Inputs

NamenametextRequired
The name to look up. Aliases and old tokens resolve the way brew resolves them, so 'openssl' finds openssl@3 and 'docker' finds docker-desktop.

Outputs

caskobject
Everything Homebrew publishes about a cask.
formulaobject
Everything Homebrew publishes about a formula.
foundtrue/false
True when Homebrew has it either way. The field to branch on.
install_commandslist
The command for each half that has it - one entry for a formula, one for a cask, both when the name is in each.
kindtext
'formula', 'cask', 'both' when the name is in each half, or 'none' when Homebrew has neither.
nametext
The name that was looked up.
resolved_cask_tokentext
The cask token it resolved to. Null when there is no such cask.
resolved_formula_nametext
The formula name it resolved to, which differs from the one asked for when an alias was used. Null when there is no such formula.
Example output
{
  "cask": {
    "also_known_as": [],
    "auto_updates": true,
    "cask_source_url": "https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/f/firefox.rb",
    "caveats": null,
    "conflicts_with_casks": [],
    "deprecated": false,
    "deprecation_date": null,
    "deprecation_reason": null,
    "deprecation_reason_explained": null,
    "description": "Web browser",
    "disable_date": null,
    "disabled": false,
    "download_checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "download_url": "https://archive.mozilla.org/pub/firefox/releases/154.0.1/mac/en-US/Firefox%20154.0.1.dmg",
    "full_token": "firefox",
    "homepage": "https://www.mozilla.org/firefox/",
    "install_command": "brew install --cask firefox",
    "languages": [
      "en-US",
      "de",
      "fr"
    ],
    "name": "Mozilla Firefox",
    "old_tokens": [],
    "replacement_cask": null,
    "replacement_formula": null,
    "requires": {
      "arch": [],
      "casks": [],
      "formulae": [],
      "macos": [
        "macos >= 10.15"
      ]
    },
    "supported_platforms": [
      "arm64_tahoe",
      "tahoe",
      "arm64_sequoia",
      "sequoia"
    ],
    "tap": "homebrew/cask",
    "token": "firefox",
    "url": "https://formulae.brew.sh/cask/firefox",
    "version": "154.0.1"
  },
  "formula": {
    "aliases": [],
    "bottle_platforms": [
      "arm64_linux",
      "arm64_sequoia",
      "arm64_sonoma",
      "arm64_tahoe",
      "sonoma",
      "x86_64_linux"
    ],
    "bottled": true,
    "caveats": null,
    "deprecated": false,
    "deprecation_date": null,
    "deprecation_reason": null,
    "deprecation_reason_explained": null,
    "description": "Internet file retriever",
    "disable_date": null,
    "disabled": false,
    "executables": [
      "wget"
    ],
    "formula_source_url": "https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/w/wget.rb",
    "full_name": "wget",
    "has_head": true,
    "homepage": "https://www.gnu.org/software/wget/",
    "install_command": "brew install wget",
    "keg_only": false,
    "keg_only_reason": null,
    "license": "GPL-3.0-or-later",
    "name": "wget",
    "old_names": [],
    "replacement_cask": null,
    "replacement_formula": null,
    "revision": 0,
    "runs_as_service": false,
    "source_checksum": "766e48423e79359ea31e41db9e5c289675947a7fcf2efdcedb726ac9d0da3784",
    "source_url": "https://ftpmirror.gnu.org/gnu/wget/wget-1.25.0.tar.gz",
    "tap": "homebrew/core",
    "url": "https://formulae.brew.sh/formula/wget",
    "version": "1.25.0",
    "versioned_formulae": []
  },
  "found": true,
  "install_commands": [
    "brew install docker",
    "brew install --cask docker-desktop"
  ],
  "kind": "both",
  "name": "docker",
  "resolved_cask_token": "docker-desktop",
  "resolved_formula_name": "docker"
}

Get a cask

Get everything Homebrew publishes about one cask: the version it ships, where the download comes from and its checksum, the macOS releases and architectures it runs on, what it needs installed first, what it conflicts with, whether it updates itself, whether it is deprecated and what to use instead - and how many times it has been installed over the last 30, 90 and 365 days. An old token resolves the way brew resolves it, so 'docker' finds docker-desktop. No account or API key required.

Inputs

CaskcasktextRequired
The cask's token, as 'brew install --cask' spells it - e.g. firefox. An old token works too: 'docker' finds docker-desktop. Pasting its formulae.brew.sh URL works as well.

Outputs

analyticsobject
Install counts from Homebrew's opt-in anonymous analytics - the same numbers 'brew info --analytics' prints.
artifact_kindslist
The kinds of thing it installs, removes or runs - app, binary, pkg, font, uninstall, zap and so on. List the artifacts themselves for the detail.
caskobject
Everything Homebrew publishes about a cask.
generated_datetext
The day Homebrew generated this data, as YYYY-MM-DD. The API is rebuilt daily.
requested_tokentext
The token that was asked for.
resolved_tokentext
The token Homebrew publishes it under. Different from the requested one when an old token was used.
was_an_old_tokentrue/false
True when the token asked for was one the cask has since been renamed away from.
Example output
{
  "analytics": {
    "build_error": {
      "30d": null,
      "365d": null,
      "90d": null
    },
    "install": {
      "30d": 14518,
      "365d": 214688,
      "90d": 46107
    },
    "install_on_request": {
      "30d": null,
      "365d": null,
      "90d": null
    }
  },
  "artifact_kinds": [
    "uninstall",
    "app",
    "command_wrapper",
    "zap"
  ],
  "cask": {
    "also_known_as": [],
    "auto_updates": true,
    "cask_source_url": "https://github.com/Homebrew/homebrew-cask/blob/HEAD/Casks/f/firefox.rb",
    "caveats": null,
    "conflicts_with_casks": [],
    "deprecated": false,
    "deprecation_date": null,
    "deprecation_reason": null,
    "deprecation_reason_explained": null,
    "description": "Web browser",
    "disable_date": null,
    "disabled": false,
    "download_checksum": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "download_url": "https://archive.mozilla.org/pub/firefox/releases/154.0.1/mac/en-US/Firefox%20154.0.1.dmg",
    "full_token": "firefox",
    "homepage": "https://www.mozilla.org/firefox/",
    "install_command": "brew install --cask firefox",
    "languages": [
      "en-US",
      "de",
      "fr"
    ],
    "name": "Mozilla Firefox",
    "old_tokens": [],
    "replacement_cask": null,
    "replacement_formula": null,
    "requires": {
      "arch": [],
      "casks": [],
      "formulae": [],
      "macos": [
        "macos >= 10.15"
      ]
    },
    "supported_platforms": [
      "arm64_tahoe",
      "tahoe",
      "arm64_sequoia",
      "sequoia"
    ],
    "tap": "homebrew/cask",
    "token": "firefox",
    "url": "https://formulae.brew.sh/cask/firefox",
    "version": "154.0.1"
  },
  "generated_date": "2026-08-27",
  "requested_token": "firefox",
  "resolved_token": "firefox",
  "was_an_old_token": false
}

Get a formula

Get everything Homebrew publishes about one formula: what it is, the version it ships, its licence, its homepage, the commands it puts on your PATH, whether a prebuilt binary exists and for which platforms, whether it is deprecated and what to use instead - and how many times it has been installed over the last 30, 90 and 365 days. Aliases resolve the way brew resolves them, so 'openssl' finds openssl@3. The starting point for almost any workflow about a package. No account or API key required.

Inputs

FormulaformulatextRequired
The formula's name, as 'brew install' spells it - e.g. wget. An alias works too: 'openssl' finds openssl@3, the same way brew does. Pasting its formulae.brew.sh URL works as well.

Outputs

analyticsobject
Install counts from Homebrew's opt-in anonymous analytics - the same numbers 'brew info --analytics' prints.
dependency_countsobject
How many dependencies it has of each kind, without listing them - enough to decide whether listing them is worth a second step.
formulaobject
Everything Homebrew publishes about a formula.
generated_datetext
The day Homebrew generated this data, as YYYY-MM-DD. The API is rebuilt daily.
requested_nametext
The name that was asked for.
resolved_nametext
The name Homebrew publishes it under. Different from the requested one when an alias or an old name was used.
was_an_aliastrue/false
True when the name asked for was an alias or an old name rather than the formula's own.
Example output
{
  "analytics": {
    "build_error": {
      "30d": 4,
      "365d": null,
      "90d": null
    },
    "install": {
      "30d": 16302,
      "365d": 323535,
      "90d": 54484
    },
    "install_on_request": {
      "30d": 15996,
      "365d": 319474,
      "90d": 53476
    }
  },
  "dependency_counts": {
    "build": 1,
    "macos": 0,
    "optional": 0,
    "recommended": 0,
    "required": 5,
    "test": 0
  },
  "formula": {
    "aliases": [],
    "bottle_platforms": [
      "arm64_linux",
      "arm64_sequoia",
      "arm64_sonoma",
      "arm64_tahoe",
      "sonoma",
      "x86_64_linux"
    ],
    "bottled": true,
    "caveats": null,
    "deprecated": false,
    "deprecation_date": null,
    "deprecation_reason": null,
    "deprecation_reason_explained": null,
    "description": "Internet file retriever",
    "disable_date": null,
    "disabled": false,
    "executables": [
      "wget"
    ],
    "formula_source_url": "https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/w/wget.rb",
    "full_name": "wget",
    "has_head": true,
    "homepage": "https://www.gnu.org/software/wget/",
    "install_command": "brew install wget",
    "keg_only": false,
    "keg_only_reason": null,
    "license": "GPL-3.0-or-later",
    "name": "wget",
    "old_names": [],
    "replacement_cask": null,
    "replacement_formula": null,
    "revision": 0,
    "runs_as_service": false,
    "source_checksum": "766e48423e79359ea31e41db9e5c289675947a7fcf2efdcedb726ac9d0da3784",
    "source_url": "https://ftpmirror.gnu.org/gnu/wget/wget-1.25.0.tar.gz",
    "tap": "homebrew/core",
    "url": "https://formulae.brew.sh/formula/wget",
    "version": "1.25.0",
    "versioned_formulae": []
  },
  "generated_date": "2026-08-27",
  "requested_name": "wget",
  "resolved_name": "wget",
  "was_an_alias": false
}

Get a summary of Homebrew

Get Homebrew's own totals in one step: how many formulae and casks it publishes, how many of each are deprecated or disabled, how many formulae ship a prebuilt binary, how many casks update themselves - and how many install events the period saw on each side. One small result for a dashboard tile, or the denominator for putting a single package's installs in proportion. No account or API key required.

Inputs

Over the lastdaystext
Optional. Which window of analytics to read. Homebrew publishes 30, 90 and 365 days and nothing else. The last 30 days by default.One of: 30d (The last 30 days), 90d (The last 90 days), 365d (The last year). Default: 30d.

Outputs

casksobject
Totals for the apps half of Homebrew.
daystext
The window that was read: 30d, 90d or 365d.
formulaeobject
Totals for the command-line half of Homebrew.
installsobject
How much of it people installed in the window.
Example output
{
  "casks": {
    "active": 6701,
    "auto_updating": 1924,
    "deprecated": 950,
    "disabled": 325,
    "total": 7712
  },
  "days": "30d",
  "formulae": {
    "active": 8125,
    "bottled": 8568,
    "deprecated": 433,
    "disabled": 131,
    "total": 8573
  },
  "installs": {
    "cask_events": 2322955,
    "cask_variants_counted": 12522,
    "days": "30d",
    "end_date": "2026-08-27",
    "formula_events": 21892981,
    "formula_variants_counted": 29099,
    "start_date": "2026-07-28"
  }
}

Get casks' install counts

Get install counts for a set of casks at once, with the window's total alongside so a number can be read as a share rather than on its own. One request covers every cask asked about, which makes it the step for tracking a shortlist of apps over time. From Homebrew's opt-in anonymous analytics. No account or API key required.

Inputs

CaskscaskslistRequired
The casks to count, by token. One request covers all of them, so a comparison needs one step rather than one per app.
Over the lastdaystext
Optional. Which window of analytics to read. Homebrew publishes 30, 90 and 365 days and nothing else. The last 30 days by default.One of: 30d (The last 30 days), 90d (The last 90 days), 365d (The last year). Default: 30d.

Outputs

caskslist
One entry per cask Homebrew counted.
countnumber
How many casks came back with counts.
daystext
The window that was read: 30d, 90d or 365d.
end_datetext
The last day counted, as YYYY-MM-DD.
not_countedlist
Casks Homebrew recorded no installs for in this window - which is also what a misspelled token looks like.
requestedlist
The casks that were asked about.
start_datetext
The first day counted, as YYYY-MM-DD.
total_eventsnumber
Every cask install in the window, so a single cask's total can be put in proportion.
total_variants_countednumber
How many distinct cask install variants Homebrew counted in the window.
Example output
{
  "casks": [
    {
      "name": "firefox",
      "total": 14518,
      "url": "https://formulae.brew.sh/cask/firefox",
      "variants": [
        {
          "count": 14518,
          "variant": "firefox"
        }
      ]
    }
  ],
  "count": 1,
  "days": "30d",
  "end_date": "2026-08-27",
  "not_counted": [],
  "requested": [
    "firefox"
  ],
  "start_date": "2026-07-28",
  "total_events": 2143085,
  "total_variants_counted": 7365
}

Get formulae's install counts

Get install counts for a set of formulae at once, broken down by how they were installed. Homebrew counts 'wget' and 'wget --HEAD' separately, so each formula comes back with its total and the variants behind it. Ask for installs, for installs somebody requested by name, or for build errors - and the window's total comes back too, so a count can be put in proportion rather than read alone. The step for tracking adoption of several packages on a schedule. No account or API key required.

Inputs

FormulaeformulaelistRequired
The formulae to count, by name. One request covers all of them, so a comparison needs one step rather than one per package.
Which eventscategorytext
Optional. Which kind of event to count. Installs by default. 'Installs on request' is the one that says whether people want a formula rather than merely depend on it. Build errors are published for the last 30 days only.One of: install (Installs - every install, dependencies included), install-on-request (Installs on request - only when somebody asked for it by name), build-error (Build errors - installs that failed to compile). Default: install.
Over the lastdaystext
Optional. Which window of analytics to read. Homebrew publishes 30, 90 and 365 days and nothing else. The last 30 days by default.One of: 30d (The last 30 days), 90d (The last 90 days), 365d (The last year). Default: 30d.

Outputs

categorytext
The event category that was read.
countnumber
How many formulae came back with counts.
daystext
The window that was read: 30d, 90d or 365d.
end_datetext
The last day counted, as YYYY-MM-DD.
formulaelist
One entry per formula Homebrew counted.
not_countedlist
Formulae Homebrew recorded no events for in this window - which is also what a misspelled name looks like.
requestedlist
The formulae that were asked about.
start_datetext
The first day counted, as YYYY-MM-DD.
total_eventsnumber
Every event in the window across all formulae, so a single formula's total can be put in proportion.
total_variants_countednumber
How many distinct install variants Homebrew counted in the window.
Example output
{
  "category": "install",
  "count": 1,
  "days": "30d",
  "end_date": "2026-08-27",
  "formulae": [
    {
      "name": "wget",
      "total": 16302,
      "url": "https://formulae.brew.sh/formula/wget",
      "variants": [
        {
          "count": 16270,
          "variant": "wget"
        },
        {
          "count": 32,
          "variant": "wget --HEAD"
        }
      ]
    }
  ],
  "not_counted": [],
  "requested": [
    "wget"
  ],
  "start_date": "2026-07-28",
  "total_events": 21234855,
  "total_variants_counted": 13370
}

List a formula's dependencies

List what a formula depends on. Homebrew splits that six ways - what it needs to run, what it needs only to compile, what its tests need, what it recommends, what it can optionally use, and what macOS already provides - and you choose which of those to read. Choosing a platform applies Homebrew's own per-platform overrides, so 'what will this pull in on Linux?' is one step rather than a manual diff. Follow the chain further than one hop to see everything an install would bring with it. No account or API key required.

Inputs

FormulaformulatextRequired
The formula's name, as 'brew install' spells it - e.g. wget. An alias works too: 'openssl' finds openssl@3, the same way brew does. Pasting its formulae.brew.sh URL works as well.
Kinds of dependencykindslist
Optional. Which dependency blocks to read. Only what it needs to run by default, which is what installing a bottle actually pulls in - build dependencies are skipped entirely when a prebuilt binary is used.One or more of: required (Required - needed to run it), build (Build - needed only to compile it, and skipped when a bottle is used), test (Test - needed only to run its test suite), recommended (Recommended - installed by default, but it can be built without them), optional (Optional - used if asked for, not installed by default), macos (Provided by macOS - built from source on Linux instead). Default: ["required"].
On this platformplatformtext
Optional. Apply the formula's overrides for one platform - on Linux wget needs util-linux and zlib-ng-compat where macOS needs gettext. The list is fetched from Homebrew, so it is always the platforms this formula actually says something about. Leave blank for the dependencies it declares by default.
How many levels to followdepthnumber
Optional. 1 lists only what the formula names itself. Raise it to follow the chain: each further level adds what the level before it needs to run, which is the whole set an install would bring with it. Between 1 and 10; 1 by default.From 1 to 10. Default: 1.

Outputs

countnumber
How many were found in total.
dependencieslist
The dependencies found, nearest first: everything one hop away, then everything two hops away.
depthnumber
How many levels were followed.
direct_countnumber
How many the formula names itself.
formulatext
The formula whose dependencies these are.
kindslist
The dependency kinds that were read.
platformtext
The platform whose overrides were applied, if any.
requested_nametext
The name that was asked for.
resolved_nametext
The name Homebrew publishes it under.
unresolvedlist
Dependencies whose own dependencies could not be read, because they come from a tap outside homebrew/core. Empty for almost every formula.
Example output
{
  "count": 5,
  "dependencies": [
    {
      "depth": 1,
      "kind": "required",
      "name": "libidn2",
      "tag": null,
      "url": "https://formulae.brew.sh/formula/libidn2"
    }
  ],
  "depth": 1,
  "direct_count": 5,
  "formula": "wget",
  "kinds": [
    "required"
  ],
  "platform": "x86_64_linux",
  "requested_name": "wget",
  "resolved_name": "wget",
  "unresolved": []
}

List a formula's prebuilt binaries

List the prebuilt binaries - bottles - a formula publishes, one per platform, each with its download URL and SHA-256. A platform with a bottle installs in seconds; one without compiles from source, which for a large formula is the difference between a minute and an hour. Use it to check whether a formula is ready for a macOS release or a Linux runner before a build depends on it, or to verify a download against the checksum Homebrew publishes. No account or API key required.

Inputs

FormulaformulatextRequired
The formula's name, as 'brew install' spells it - e.g. wget. An alias works too: 'openssl' finds openssl@3, the same way brew does. Pasting its formulae.brew.sh URL works as well.
Only these platformsplatformslist
Optional. Only the bottles for these platforms. The list is fetched from Homebrew, so it is always the ones this formula actually publishes. Leave empty for every platform.

Outputs

available_platformslist
Every platform this formula publishes a bottle for, whether or not it was asked for.
bottledtrue/false
True when the formula publishes any bottle at all. False means every install compiles.
bottleslist
The bottles, one per platform.
countnumber
How many bottles this result holds.
formulatext
The formula these bottles belong to.
platforms_without_a_bottlelist
Platforms that were asked for and have no bottle: on those, installing compiles from source.
rebuildnumber
How many times these bottles have been rebuilt without the version changing. 0 for most formulae.
requested_nametext
The name that was asked for.
requested_platformslist
The platforms that were asked for, if any.
resolved_nametext
The name Homebrew publishes it under.
root_urltext
The registry the bottles are served from.
universaltrue/false
True when it publishes one 'all' bottle that runs everywhere, which formulae with no compiled code do.
versiontext
The version these bottles were built for.
Example output
{
  "available_platforms": [
    "arm64_linux",
    "arm64_sequoia",
    "arm64_sonoma",
    "arm64_tahoe",
    "sonoma",
    "x86_64_linux"
  ],
  "bottled": true,
  "bottles": [
    {
      "cellar": "/opt/homebrew/Cellar",
      "is_universal": false,
      "platform": "arm64_sequoia",
      "sha256": "aa19cf5de262d5b67631af8288cce233a075c251c68050a1e73699314a911e7b",
      "url": "https://ghcr.io/v2/homebrew/core/wget/blobs/sha256:aa19cf5de262d5b67631af8288cce233a075c251c68050a1e73699314a911e7b"
    }
  ],
  "count": 1,
  "formula": "wget",
  "platforms_without_a_bottle": [],
  "rebuild": 2,
  "requested_name": "wget",
  "requested_platforms": [
    "arm64_sequoia"
  ],
  "resolved_name": "wget",
  "root_url": "https://ghcr.io/v2/homebrew/core",
  "universal": false,
  "version": "1.25.0"
}

List deprecated and disabled packages

List everything Homebrew has deprecated or disabled, with why and what to use instead. Deprecated still installs but is on the way out; disabled no longer installs at all, and Homebrew often sets that date in the future - which makes this the deadline list for anything a team depends on. Filter by reason, by when it happened, or to only the ones Homebrew named a replacement for, and each result carries the command that installs that replacement. The step for a scheduled dependency review. No account or API key required.

Inputs

Look inkindslist
Optional. Which halves of Homebrew to list. Both by default.One or more of: formulae (Formulae - command-line software), casks (Casks - macOS apps and other prebuilt downloads). Default: ["formulae", "casks"].
Which statestateslist
Optional. Both by default. Deprecated is a warning; disabled is a break.One or more of: deprecated (Deprecated - still installs, but on the way out), disabled (Disabled - no longer installs at all). Default: ["deprecated", "disabled"].
Only for these reasonsreasonslist
Optional. Only packages Homebrew gave one of these reasons for. These are Homebrew's own reason codes; a maintainer can also write free text instead, and those packages are returned only when no reason is chosen.One or more of: unmaintained (Is not maintained upstream), repo_archived (Has an archived upstream repository), repo_removed (Has a removed upstream repository), unsupported (Is not supported upstream), deprecated_upstream (Is deprecated upstream), discontinued (Is discontinued upstream), unreachable (Is no longer reliably reachable upstream), no_longer_available (Is no longer available upstream), fails_gatekeeper_check (Does not pass the macOS Gatekeeper check), moved_to_mas (Is now exclusively distributed on the Mac App Store), and 5 more.
On or afterchanged_sincedate
Optional. Only packages deprecated or disabled on or after this day. Use it to see what changed since the last review.
Beforechanged_beforedate
Optional. Only packages deprecated or disabled before this day. Set it to a date a few months out to find what is scheduled to stop installing soon.
Only ones with a replacementonly_with_replacementtrue/false
Optional. Only packages Homebrew named something to use instead. Off by default, because the ones with no replacement are usually the ones worth knowing about.Default: false.
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

changed_beforetext
The day results stop before, as YYYY-MM-DD.
changed_sincetext
The earliest day included, as YYYY-MM-DD.
countnumber
How many packages this result holds.
kindslist
Which halves of Homebrew were listed.
packageslist
The matching packages, most recently changed first.
reasonslist
The reasons that were filtered on, if any.
stateslist
The states that were included.
total_matchesnumber
How many matched in total, before the cut.
truncatedtrue/false
True when more matched than were returned. Raise the limit to see the rest.
Example output
{
  "changed_before": null,
  "changed_since": "2026-06-01",
  "count": 1,
  "kinds": [
    "formulae",
    "casks"
  ],
  "packages": [
    {
      "date": "2026-08-21",
      "description": "Retrieve files over IPFS and save them locally",
      "kind": "formula",
      "name": "ipget",
      "reason": "repo_archived",
      "reason_explained": "has an archived upstream repository",
      "replacement": "kubo",
      "replacement_command": "brew install kubo",
      "state": "deprecated",
      "url": "https://formulae.brew.sh/formula/ipget"
    }
  ],
  "reasons": [
    "repo_archived"
  ],
  "states": [
    "deprecated",
    "disabled"
  ],
  "total_matches": 116,
  "truncated": true
}

List the most-installed casks

Read Homebrew's cask install chart: which apps and prebuilt tools developers actually install on their Macs, ranked, with the count and the share of all cask installs behind each. A read on what developers are adopting - the chart moves fast, so a new tool's rise shows up here within weeks. Filter by name to pull one vendor's apps out of it. From Homebrew's opt-in anonymous analytics. No account or API key required.

Inputs

Over the lastdaystext
Optional. Which window of analytics to read. Homebrew publishes 30, 90 and 365 days and nothing else. The last 30 days by default.One of: 30d (The last 30 days), 90d (The last 90 days), 365d (The last year). Default: 30d.
Only names containingcontainstext
Optional. Only chart rows whose name contains this text. Use it to pull one project's packages out of the chart rather than reading all of it.
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

caskslist
The chart rows, most installed first.
containstext
The name filter that was applied, if any.
countnumber
How many rows this result holds.
daystext
The window that was read: 30d, 90d or 365d.
end_datetext
The last day counted, as YYYY-MM-DD.
start_datetext
The first day counted, as YYYY-MM-DD.
total_eventsnumber
Every cask install in the window. The number a single cask's count is a share of.
total_matchesnumber
How many rows matched the name filter, before the cut.
total_rowsnumber
How many rows the chart publishes in all.
total_variants_countednumber
How many distinct cask install variants Homebrew counted.
truncatedtrue/false
True when more rows matched than were returned.
Example output
{
  "casks": [
    {
      "cask": "codex",
      "count": 128930,
      "name": "codex",
      "percent": 5.55,
      "rank": 1,
      "url": "https://formulae.brew.sh/cask/codex"
    }
  ],
  "contains": null,
  "count": 1,
  "days": "30d",
  "end_date": "2026-08-27",
  "start_date": "2026-07-28",
  "total_events": 2322955,
  "total_matches": 12522,
  "total_rows": 12522,
  "total_variants_counted": 12522,
  "truncated": true
}

List the most-installed formulae

Read Homebrew's install chart: which formulae developers actually install, ranked, with the count and the share of all installs behind each. Count every install, or only the ones somebody asked for by name rather than pulled in as a dependency - which is the difference between a popular library and a popular tool. Switch the category to build errors to see what is failing to compile most. Filter by name to pull one project's packages out of the chart. These are the numbers 'brew info --analytics' prints, from Homebrew's opt-in anonymous analytics. No account or API key required.

Inputs

Which eventscategorytext
Optional. Which kind of event to count. Installs by default. 'Installs on request' is the one that says whether people want a formula rather than merely depend on it. Build errors are published for the last 30 days only.One of: install (Installs - every install, dependencies included), install-on-request (Installs on request - only when somebody asked for it by name), build-error (Build errors - installs that failed to compile). Default: install.
Over the lastdaystext
Optional. Which window of analytics to read. Homebrew publishes 30, 90 and 365 days and nothing else. The last 30 days by default.One of: 30d (The last 30 days), 90d (The last 90 days), 365d (The last year). Default: 30d.
Only names containingcontainstext
Optional. Only chart rows whose name contains this text. Use it to pull one project's packages out of the chart rather than reading all of it.
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

categorytext
The event category that was read.
containstext
The name filter that was applied, if any.
countnumber
How many rows this result holds.
daystext
The window that was read: 30d, 90d or 365d.
end_datetext
The last day counted, as YYYY-MM-DD.
formulaelist
The chart rows, most installed first.
start_datetext
The first day counted, as YYYY-MM-DD.
total_eventsnumber
Every event in the window across all formulae. The number a single formula's count is a share of.
total_matchesnumber
How many rows matched the name filter, before the cut.
total_rowsnumber
How many rows the chart publishes in all.
total_variants_countednumber
How many distinct install variants Homebrew counted. Larger than the number of rows it publishes, because the chart is capped.
truncatedtrue/false
True when more rows matched than were returned.
Example output
{
  "category": "install",
  "contains": null,
  "count": 1,
  "days": "30d",
  "end_date": "2026-08-27",
  "formulae": [
    {
      "count": 544934,
      "formula": "ca-certificates",
      "name": "ca-certificates",
      "percent": 2.49,
      "rank": 1,
      "url": "https://formulae.brew.sh/formula/ca-certificates"
    }
  ],
  "start_date": "2026-07-28",
  "total_events": 21892981,
  "total_matches": 23325,
  "total_rows": 23325,
  "total_variants_counted": 29099,
  "truncated": true
}

List what a cask installs

List what a cask actually puts on the machine, and what taking it off again removes: the app bundle and where it lands, the commands it symlinks onto PATH, the packages it runs, the fonts it drops in, the processes uninstalling quits and the files a full zap deletes. The step for reviewing an app before it goes on a fleet, or for writing down what a clean removal involves. No account or API key required.

Inputs

CaskcasktextRequired
The cask's token, as 'brew install --cask' spells it - e.g. firefox. An old token works too: 'docker' finds docker-desktop. Pasting its formulae.brew.sh URL works as well.
Only these kindskindslist
Optional. Only these artifact stanzas. The list is fetched from Homebrew, so it is always the ones this cask actually declares. Leave empty for all of them.

Outputs

artifactslist
Every artifact, in the order the cask declares them.
available_kindslist
Every kind this cask declares.
casktext
The cask these artifacts belong to.
countnumber
How many artifacts this result holds.
installslist
Just the artifacts that put something on disk - what actually arrives when you install it.
kinds_not_declaredlist
Kinds that were asked for and this cask does not declare - which is why they are not in the result.
removeslist
Just the uninstall and zap stanzas - what taking it off again undoes.
requested_kindslist
The kinds that were asked for, if any.
requested_tokentext
The token that was asked for.
resolved_tokentext
The token Homebrew publishes it under.
versiontext
The version these artifacts belong to.
Example output
{
  "artifacts": [
    {
      "group": "installs",
      "kind": "app",
      "names": [
        "Firefox.app"
      ],
      "options": [],
      "target": "/Applications/Firefox.app"
    }
  ],
  "available_kinds": [
    "uninstall",
    "app",
    "command_wrapper",
    "zap"
  ],
  "cask": "firefox",
  "count": 1,
  "installs": [
    {
      "group": "installs",
      "kind": "app",
      "names": [
        "Firefox.app"
      ],
      "options": [],
      "target": "/Applications/Firefox.app"
    }
  ],
  "kinds_not_declared": [],
  "removes": [],
  "requested_kinds": [
    "app"
  ],
  "requested_token": "firefox",
  "resolved_token": "firefox",
  "version": "154.0.1"
}

List what depends on a formula

List everything in Homebrew that depends on a formula - both the formulae that need it and the casks that require it. The question to ask before a library is deprecated, or when a CVE lands on one: what breaks, and how widely is it used? Each result says whether it needs the formula to run or only to build, which is the difference between a real break and a rebuild. No account or API key required.

Inputs

FormulaformulatextRequired
The formula's name, as 'brew install' spells it - e.g. wget. An alias works too: 'openssl' finds openssl@3, the same way brew does. Pasting its formulae.brew.sh URL works as well.
Counting which dependencieskindslist
Optional. Which kinds of dependency count as 'depends on'. What it needs to run and what it needs to build, by default.One or more of: required (Required - needed to run it), build (Build - needed only to compile it, and skipped when a bottle is used), test (Test - needed only to run its test suite), recommended (Recommended - installed by default, but it can be built without them), optional (Optional - used if asked for, not installed by default), macos (Provided by macOS - built from source on Linux instead). Default: ["required", "build"].
Look inincludelist
Optional. Which halves of Homebrew to search. Both by default: a cask can require a formula too.One or more of: formulae (Formulae - command-line software), casks (Casks - macOS apps and other prebuilt downloads). Default: ["formulae", "casks"].
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

cask_countnumber
How many casks require it in total.
caskslist
The casks that require it.
formulatext
The formula that is depended on.
formula_countnumber
How many formulae depend on it in total.
formulaelist
The formulae that depend on it.
includedlist
Which halves of Homebrew were searched.
kindslist
The dependency kinds that were counted.
requested_nametext
The name that was asked for.
resolved_nametext
The name Homebrew publishes it under.
totalnumber
The two counts added together.
truncatedtrue/false
True when either list was cut. Raise the limit to see the rest.
Example output
{
  "cask_count": 0,
  "casks": [],
  "formula": "libidn2",
  "formula_count": 34,
  "formulae": [
    {
      "depends_as": [
        "required"
      ],
      "deprecated": false,
      "description": "Implementation of the DNS protocols",
      "disabled": false,
      "full_name": "bind",
      "homepage": "https://www.isc.org/bind/",
      "install_command": "brew install bind",
      "license": "MPL-2.0",
      "name": "bind",
      "tap": "homebrew/core",
      "url": "https://formulae.brew.sh/formula/bind",
      "version": "9.20.27"
    }
  ],
  "included": [
    "formulae",
    "casks"
  ],
  "kinds": [
    "required",
    "build"
  ],
  "requested_name": "libidn2",
  "resolved_name": "libidn2",
  "total": 34,
  "truncated": true
}

Search casks

Search every cask Homebrew installs - the macOS apps, fonts and prebuilt downloads, 7,700 of them. Match on the token 'brew install --cask' takes, on the app's own name, or on its description, and each hit carries the version Homebrew ships, its homepage and the command that installs it. Filter to what still installs to keep a shortlist free of apps Homebrew has given up on. No account or API key required.

Inputs

Search textquerytext
Optional. What to search for. Leave it blank to list casks and filter on the other fields instead.
Search inmatchlist
Optional. Which fields the search text has to appear in. All three by default, which is what makes a loosely remembered app name findable.One or more of: token (Token - the name 'brew install --cask' takes), name (App name - what the app calls itself), description (Description - the one line Homebrew shows). Default: ["token", "name", "description"].
Includestatustext
Optional. Narrow the results by whether Homebrew still recommends them. 'Everything' by default.One of: any (Everything), active (Only what still installs and is not deprecated), deprecated (Only what is deprecated), disabled (Only what no longer installs). Default: any.
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

caskslist
The matching casks, closest match first.
countnumber
How many casks this result holds.
matched_onlist
The fields that were searched.
querytext
The search text that was used.
statustext
The status filter that was applied.
total_casksnumber
How many casks Homebrew publishes in all.
total_matchesnumber
How many matched in total, before the cut.
truncatedtrue/false
True when more matched than were returned. Raise the limit to see the rest.
Example output
{
  "casks": [
    {
      "deprecated": false,
      "description": "Web browser",
      "disabled": false,
      "homepage": "https://www.mozilla.org/firefox/",
      "install_command": "brew install --cask firefox",
      "name": "Mozilla Firefox",
      "tap": "homebrew/cask",
      "token": "firefox",
      "url": "https://formulae.brew.sh/cask/firefox",
      "version": "154.0.1"
    }
  ],
  "count": 1,
  "matched_on": [
    "token",
    "name",
    "description"
  ],
  "query": "firefox",
  "status": "any",
  "total_casks": 7712,
  "total_matches": 6,
  "truncated": false
}

Search formulae

Search every formula Homebrew installs - the command-line half of Homebrew, 8,500 packages and counting. Match on name, on description, or on the commands a formula provides, which is how you find out that 'rg' comes from ripgrep. Filter to what still installs, or to a licence, and each hit carries the version Homebrew ships, its licence, its homepage and the command that installs it. The starting point for 'what is there for X?'. No account or API key required.

Inputs

Search textquerytext
Optional. What to search for. Leave it blank to list formulae and filter on the other fields instead.
Search inmatchlist
Optional. Which fields the search text has to appear in. Name and description by default. Choose 'command it provides' on its own to answer 'which formula installs this command?'.One or more of: name (Name - including its aliases and any old name), description (Description - the one line Homebrew shows), executable (Command it provides - finds the formula behind a command name). Default: ["name", "description"].
Includestatustext
Optional. Narrow the results by whether Homebrew still recommends them. 'Everything' by default.One of: any (Everything), active (Only what still installs and is not deprecated), deprecated (Only what is deprecated), disabled (Only what no longer installs). Default: any.
Licence containslicensetext
Optional. Only formulae whose SPDX licence expression contains this text. Licences are free-form expressions ('Apache-2.0 OR MIT'), so this matches part of one rather than picking from a list.
How many to returnlimitnumber
Optional. How many results to return. Homebrew publishes no paging - every listing answers whole - so results are cut to this instead. Between 1 and 1000; 25 by default.From 1 to 1000. Default: 25.

Outputs

countnumber
How many formulae this result holds.
formulaelist
The matching formulae, closest match first.
licensetext
The licence text that was filtered on.
matched_onlist
The fields that were searched.
querytext
The search text that was used.
statustext
The status filter that was applied.
total_formulaenumber
How many formulae Homebrew publishes in all.
total_matchesnumber
How many matched in total, before the cut.
truncatedtrue/false
True when more matched than were returned. Raise the limit to see the rest.
Example output
{
  "count": 1,
  "formulae": [
    {
      "deprecated": false,
      "description": "Internet file retriever",
      "disabled": false,
      "full_name": "wget",
      "homepage": "https://www.gnu.org/software/wget/",
      "install_command": "brew install wget",
      "license": "GPL-3.0-or-later",
      "name": "wget",
      "tap": "homebrew/core",
      "url": "https://formulae.brew.sh/formula/wget",
      "version": "1.25.0"
    }
  ],
  "license": null,
  "matched_on": [
    "name",
    "description"
  ],
  "query": "wget",
  "status": "any",
  "total_formulae": 8573,
  "total_matches": 5,
  "truncated": false
}

On this page