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
| Action | What it does |
|---|---|
| Find a package | Look one name up as both a formula and a cask, and say how to install whatever Homebrew has. |
| 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. |
| 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. |
| 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. |
| 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. |
| Get formulae's install counts | Get install counts for a set of formulae at once, broken down by how they were installed. |
| List a formula's dependencies | List what a formula depends on. |
| 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. |
| List deprecated and disabled packages | List everything Homebrew has deprecated or disabled, with why and what to use instead. |
| 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. |
| 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. |
| 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. |
| 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. |
| Search casks | Search every cask Homebrew installs - the macOS apps, fonts and prebuilt downloads, 7,700 of them. |
| Search formulae | Search 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
- Name
nametextRequired - 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
- Cask
casktextRequired - 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
- Formula
formulatextRequired - 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 last
daystext - 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
- Casks
caskslistRequired - 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 last
daystext - 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
- Formulae
formulaelistRequired - The formulae to count, by name. One request covers all of them, so a comparison needs one step rather than one per package.
- Which events
categorytext - 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 last
daystext - 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
- Formula
formulatextRequired - 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 dependency
kindslist - 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 platform
platformtext - 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 follow
depthnumber - 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
- Formula
formulatextRequired - 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 platforms
platformslist - 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 in
kindslist - 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 state
stateslist - 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 reasons
reasonslist - 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 after
changed_sincedate - Optional. Only packages deprecated or disabled on or after this day. Use it to see what changed since the last review.
- Before
changed_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 replacement
only_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 return
limitnumber - 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 last
daystext - 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 containing
containstext - 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 return
limitnumber - 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 events
categorytext - 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 last
daystext - 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 containing
containstext - 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 return
limitnumber - 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
- Cask
casktextRequired - 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 kinds
kindslist - 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
- Formula
formulatextRequired - 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 dependencies
kindslist - 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 in
includelist - 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 return
limitnumber - 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 text
querytext - Optional. What to search for. Leave it blank to list casks and filter on the other fields instead.
- Search in
matchlist - 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"]. - Include
statustext - 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 return
limitnumber - 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 text
querytext - Optional. What to search for. Leave it blank to list formulae and filter on the other fields instead.
- Search in
matchlist - 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"]. - Include
statustext - 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 contains
licensetext - 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 return
limitnumber - 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
}