6  Programmatic access (APIs)

R-universe offers several APIs. There is no authentication.

You can call the API as you prefer:

On this page we’ll show examples using {httr2} or {universe} directly.

6.1 Universe-specific APIs

The URL of these APIs start with the universe URL. Here we will often use https://jeroen.r-universe.dev as an example but you can replace it with any universe URL.

6.1.1 List of all universes

URL: https://r-universe.dev/stats/everyone

Example

universes <- httr2::request("https://r-universe.dev/stats/everyone") |>
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()
str(universes, max.level = 1)
List of 2
 $ universes  :List of 9519
 $ maintainers:List of 9436
head(universes[["universes"]])
[[1]]
[1] "09dohkim"

[[2]]
[1] "16cile"

[[3]]
[1] "16eagle"

[[4]]
[1] "1802515849"

[[5]]
[1] "1vbutkus"

[[6]]
[1] "2005m"
head(universes[["maintainers"]])
[[1]]
[1] "09dohkim"

[[2]]
[1] "0umfhxcvx5j7joaohfss5mncnistjj6q"

[[3]]
[1] "123caj"

[[4]]
[1] "13479776"

[[5]]
[1] "16cile"

[[6]]
[1] "1802515849"

Or:

universe::everyone() |> head()
[1] "09dohkim"                         "0umfhxcvx5j7joaohfss5mncnistjj6q"
[3] "123caj"                           "13479776"                        
[5] "16cile"                           "1802515849"                      
universe::everyone(type = "universes") |> head()
[1] "09dohkim"   "16cile"     "16eagle"    "1802515849" "1vbutkus"  
[6] "2005m"     
universe::everyone(type = "maintainers") |> head()
[1] "09dohkim"                         "0umfhxcvx5j7joaohfss5mncnistjj6q"
[3] "123caj"                           "13479776"                        
[5] "16cile"                           "1802515849"                      

6.1.2 List of packages in an universe

URL: https://<username>.r-universe.dev/api/ls

Example

packages <- httr2::request("https://jeroen.r-universe.dev/api/ls") |>
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()
str(packages)
List of 19
 $ : chr "RAppArmor"
 $ : chr "V8"
 $ : chr "badgen"
 $ : chr "base64"
 $ : chr "bcrypt"
 $ : chr "brotli"
 $ : chr "curl"
 $ : chr "gpg"
 $ : chr "js"
 $ : chr "jsonlite"
 $ : chr "maketools"
 $ : chr "mongolite"
 $ : chr "openssl"
 $ : chr "protolite"
 $ : chr "rjade"
 $ : chr "sys"
 $ : chr "unix"
 $ : chr "webp"
 $ : chr "webutils"

Or:

packages <- universe::universe_ls("jeroen")
str(packages)
 chr [1:19] "RAppArmor" "V8" "badgen" "base64" "bcrypt" "brotli" "curl" ...

6.1.3 Information of all packages in an universe

URL: https://<username>.r-universe.dev/api/packages

Parameters:

  • limit: the number of results to return, by default a maximum of 100. You can use the ls endpoint to determine the total number of packages in the universe and set that as a limit.

Example:

packages <- httr2::request("https://jeroen.r-universe.dev/api/packages") |>
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()
# The result is a list of packages
str(packages[[1]], max.level = 1)
List of 75
 $ Package           : chr "curl"
 $ Type              : chr "Package"
 $ Title             : chr "A Modern and Flexible Web Client for R"
 $ Version           : chr "5.3.0"
 $ Authors@R         : chr "c(\nperson(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"[email protected]\",\ncomment = c(ORC"| __truncated__
 $ Description       : chr "The curl() and curl_download() functions provide highly\nconfigurable drop-in replacements for base url() and\n"| __truncated__
 $ License           : chr "MIT + file LICENSE"
 $ SystemRequirements: chr "libcurl: libcurl-devel (rpm) or\nlibcurl4-openssl-dev (deb). Version 7.80 or up is recommended."
 $ URL               : chr "https://jeroen.r-universe.dev/curl https://curl.se/libcurl/"
 $ BugReports        : chr "https://github.com/jeroen/curl/issues"
 $ VignetteBuilder   : chr "knitr"
 $ RoxygenNote       : chr "7.3.2.9000"
 $ Encoding          : chr "UTF-8"
 $ Language          : chr "en-US"
 $ Roxygen           : chr "list(markdown = TRUE)"
 $ Repository        : chr "https://jeroen.r-universe.dev"
 $ RemoteUrl         : chr "https://github.com/jeroen/curl"
 $ RemoteRef         : chr "HEAD"
 $ RemoteSha         : chr "28cf6e3589a33b618ba7134842b8efbc45e31aa5"
 $ NeedsCompilation  : chr "yes"
 $ Packaged          :List of 2
 $ Author            : chr "Jeroen Ooms [aut, cre] (<https://orcid.org/0000-0002-4035-0289>),\nHadley Wickham [ctb],\nRStudio [cph]"
 $ Maintainer        : chr "Jeroen Ooms <[email protected]>"
 $ MD5sum            : chr "61990cbc51b6eb2554c8c12ac83a017f"
 $ _user             : chr "jeroen"
 $ _type             : chr "src"
 $ _file             : chr "curl_5.3.0.tar.gz"
 $ _fileid           : chr "9418b47b7ebf968afa84be0da01dc4e5cbc1f8d842d8a1de1e58d9136a154c9d"
 $ _filesize         : int 523775
 $ _sha256           : chr "9418b47b7ebf968afa84be0da01dc4e5cbc1f8d842d8a1de1e58d9136a154c9d"
 $ _created          : chr "2024-10-23T14:15:00.000Z"
 $ _published        : chr "2024-10-23T14:25:36.391Z"
 $ _buildurl         : chr "https://github.com/r-universe/jeroen/actions/runs/11481752355"
 $ _status           : chr "success"
 $ _windevel         : chr "failure"
 $ _linuxdevel       : chr "success"
 $ _wasmbinary       : chr "none"
 $ _macbinary        : chr "success"
 $ _winbinary        : chr "failure"
 $ _pkgdocs          : chr "skipped"
 $ _upstream         : chr "https://github.com/jeroen/curl"
 $ _commit           :List of 5
 $ _maintainer       :List of 6
 $ _distro           : chr "noble"
 $ _host             : chr "GitHub-Actions"
 $ _registered       : logi TRUE
 $ _dependencies     :List of 9
 $ _owner            : chr "jeroen"
 $ _selfowned        : logi TRUE
 $ _usedby           : int 5599
 $ _updates          :List of 15
 $ _tags             :List of 2
 $ _stars            : int 217
 $ _contributions    :List of 20
 $ _userbio          :List of 4
 $ _downloads        :List of 2
 $ _mentions         : int 21
 $ _devurl           : chr "https://github.com/jeroen/curl"
 $ _searchresults    : int 3424
 $ _assets           :List of 11
 $ _homeurl          : chr "https://github.com/jeroen/curl"
 $ _realowner        : chr "jeroen"
 $ _cranurl          : logi TRUE
 $ _releases         :List of 46
 $ _exports          :List of 42
 $ _help             :List of 19
 $ _readme           : chr "https://github.com/jeroen/curl/raw/HEAD/README.md"
 $ _rundeps          : list()
 $ _sysdeps          :List of 1
 $ _vignettes        :List of 2
 $ _score            : num 19.6
 $ _indexed          : logi TRUE
 $ _nocasepkg        : chr "curl"
 $ _universes        :List of 1
 $ _binaries         :List of 9

Or:

packages <- universe::universe_all_packages("jeroen")
# The result is a list of packages
str(packages[[1]], max.level = 1)
List of 75
 $ Package           : chr "curl"
 $ Type              : chr "Package"
 $ Title             : chr "A Modern and Flexible Web Client for R"
 $ Version           : chr "5.3.0"
 $ Authors@R         : chr "c(\nperson(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"[email protected]\",\ncomment = c(ORC"| __truncated__
 $ Description       : chr "The curl() and curl_download() functions provide highly\nconfigurable drop-in replacements for base url() and\n"| __truncated__
 $ License           : chr "MIT + file LICENSE"
 $ SystemRequirements: chr "libcurl: libcurl-devel (rpm) or\nlibcurl4-openssl-dev (deb). Version 7.80 or up is recommended."
 $ URL               : chr "https://jeroen.r-universe.dev/curl https://curl.se/libcurl/"
 $ BugReports        : chr "https://github.com/jeroen/curl/issues"
 $ VignetteBuilder   : chr "knitr"
 $ RoxygenNote       : chr "7.3.2.9000"
 $ Encoding          : chr "UTF-8"
 $ Language          : chr "en-US"
 $ Roxygen           : chr "list(markdown = TRUE)"
 $ Repository        : chr "https://jeroen.r-universe.dev"
 $ RemoteUrl         : chr "https://github.com/jeroen/curl"
 $ RemoteRef         : chr "HEAD"
 $ RemoteSha         : chr "28cf6e3589a33b618ba7134842b8efbc45e31aa5"
 $ NeedsCompilation  : chr "yes"
 $ Packaged          :List of 2
 $ Author            : chr "Jeroen Ooms [aut, cre] (<https://orcid.org/0000-0002-4035-0289>),\nHadley Wickham [ctb],\nRStudio [cph]"
 $ Maintainer        : chr "Jeroen Ooms <[email protected]>"
 $ MD5sum            : chr "61990cbc51b6eb2554c8c12ac83a017f"
 $ _user             : chr "jeroen"
 $ _type             : chr "src"
 $ _file             : chr "curl_5.3.0.tar.gz"
 $ _fileid           : chr "9418b47b7ebf968afa84be0da01dc4e5cbc1f8d842d8a1de1e58d9136a154c9d"
 $ _filesize         : int 523775
 $ _sha256           : chr "9418b47b7ebf968afa84be0da01dc4e5cbc1f8d842d8a1de1e58d9136a154c9d"
 $ _created          : chr "2024-10-23T14:15:00.000Z"
 $ _published        : chr "2024-10-23T14:25:36.391Z"
 $ _buildurl         : chr "https://github.com/r-universe/jeroen/actions/runs/11481752355"
 $ _status           : chr "success"
 $ _windevel         : chr "failure"
 $ _linuxdevel       : chr "success"
 $ _wasmbinary       : chr "none"
 $ _macbinary        : chr "success"
 $ _winbinary        : chr "failure"
 $ _pkgdocs          : chr "skipped"
 $ _upstream         : chr "https://github.com/jeroen/curl"
 $ _commit           :List of 5
 $ _maintainer       :List of 6
 $ _distro           : chr "noble"
 $ _host             : chr "GitHub-Actions"
 $ _registered       : logi TRUE
 $ _dependencies     :List of 9
 $ _owner            : chr "jeroen"
 $ _selfowned        : logi TRUE
 $ _usedby           : int 5599
 $ _updates          :List of 15
 $ _tags             :List of 2
 $ _stars            : int 217
 $ _contributions    :List of 20
 $ _userbio          :List of 4
 $ _downloads        :List of 2
 $ _mentions         : int 21
 $ _devurl           : chr "https://github.com/jeroen/curl"
 $ _searchresults    : int 3424
 $ _assets           :List of 11
 $ _homeurl          : chr "https://github.com/jeroen/curl"
 $ _realowner        : chr "jeroen"
 $ _cranurl          : logi TRUE
 $ _releases         :List of 46
 $ _exports          :List of 42
 $ _help             :List of 19
 $ _readme           : chr "https://github.com/jeroen/curl/raw/HEAD/README.md"
 $ _rundeps          : list()
 $ _sysdeps          :List of 1
 $ _vignettes        :List of 2
 $ _score            : num 19.6
 $ _indexed          : logi TRUE
 $ _nocasepkg        : chr "curl"
 $ _universes        :List of 1
 $ _binaries         :List of 9

6.1.4 Information on a single package in an universe

URL: https://<username>.r-universe.dev/api/packages/<package>

Example:

v8 <- httr2::request("https://jeroen.r-universe.dev/api/packages/V8") |>
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()

str(v8, max.level = 1)
List of 77
 $ Package           : chr "V8"
 $ Type              : chr "Package"
 $ Title             : chr "Embedded JavaScript and WebAssembly Engine for R"
 $ Version           : chr "6.0.0"
 $ Authors@R         : chr "c(\nperson(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"[email protected]\",\ncomment = c(ORC"| __truncated__
 $ Description       : chr "An R interface to V8 <https://v8.dev>: Google's open\nsource JavaScript and WebAssembly engine. This package ca"| __truncated__
 $ License           : chr "MIT + file LICENSE"
 $ URL               : chr "https://jeroen.r-universe.dev/V8"
 $ BugReports        : chr "https://github.com/jeroen/v8/issues"
 $ SystemRequirements: chr "V8 engine version 6+ is needed for ES6 and WASM\nsupport. On Linux you can build against libv8-dev (Debian) or\"| __truncated__
 $ NeedsCompilation  : chr "yes"
 $ VignetteBuilder   : chr "knitr"
 $ RoxygenNote       : chr "7.3.1"
 $ Roxygen           : chr "list(load = \"installed\", markdown = TRUE)"
 $ Language          : chr "en-US"
 $ Encoding          : chr "UTF-8"
 $ Biarch            : chr "true"
 $ Repository        : chr "https://jeroen.r-universe.dev"
 $ RemoteUrl         : chr "https://github.com/jeroen/v8"
 $ RemoteRef         : chr "HEAD"
 $ RemoteSha         : chr "8d5312779708b6bc13970b199363296d0776fb86"
 $ Packaged          :List of 2
 $ Author            : chr "Jeroen Ooms [aut, cre] (<https://orcid.org/0000-0002-4035-0289>),\nJan Marvin Garbuszus [ctb]"
 $ Maintainer        : chr "Jeroen Ooms <[email protected]>"
 $ MD5sum            : chr "b3e85490797b360b69df1da61f516c6c"
 $ _user             : chr "jeroen"
 $ _type             : chr "src"
 $ _file             : chr "V8_6.0.0.tar.gz"
 $ _fileid           : chr "b3e85490797b360b69df1da61f516c6c"
 $ _filesize         : int 196083
 $ _sha256           : chr "57e4fdd75a66b70e1acfb642252435e7b9f67e1deb596ce7c3979b276712df67"
 $ _created          : chr "2024-10-12T10:13:37.000Z"
 $ _published        : chr "2024-10-12T21:19:45.180Z"
 $ _buildurl         : chr "https://github.com/r-universe/jeroen/actions/runs/11304816202"
 $ _status           : chr "success"
 $ _windevel         : chr "success"
 $ _linuxdevel       : chr "success"
 $ _wasmbinary       : chr "none"
 $ _macbinary        : chr "success"
 $ _winbinary        : chr "success"
 $ _pkgdocs          : chr "skipped"
 $ _upstream         : chr "https://github.com/jeroen/v8"
 $ _commit           :List of 5
 $ _maintainer       :List of 6
 $ _distro           : chr "noble"
 $ _host             : chr "GitHub-Actions"
 $ _registered       : logi TRUE
 $ _dependencies     :List of 8
 $ _owner            : chr "jeroen"
 $ _selfowned        : logi TRUE
 $ _usedby           : int 311
 $ _updates          :List of 13
 $ _tags             : list()
 $ _topics           :List of 3
 $ _stars            : int 199
 $ _contributions    :List of 10
 $ _userbio          :List of 4
 $ _downloads        :List of 2
 $ _mentions         : int 2
 $ _devurl           : chr "https://github.com/jeroen/v8"
 $ _searchresults    : int 496
 $ _assets           :List of 11
 $ _homeurl          : chr "https://github.com/jeroen/v8"
 $ _realowner        : chr "jeroen"
 $ _cranurl          : logi TRUE
 $ _releases         :List of 49
 $ _exports          :List of 6
 $ _help             :List of 3
 $ _readme           : chr "https://github.com/jeroen/v8/raw/HEAD/README.md"
 $ _rundeps          :List of 3
 $ _sysdeps          :List of 2
 $ _vignettes        :List of 2
 $ _score            : num 15.5
 $ _indexed          : logi TRUE
 $ _nocasepkg        : chr "v8"
 $ _universes        :List of 1
 $ _binaries         :List of 9

Or:

V8 <- universe::universe_one_package("jeroen", "V8")
# The result is a list of packages
str(V8, max.level = 1)
List of 77
 $ Package           : chr "V8"
 $ Type              : chr "Package"
 $ Title             : chr "Embedded JavaScript and WebAssembly Engine for R"
 $ Version           : chr "6.0.0"
 $ Authors@R         : chr "c(\nperson(\"Jeroen\", \"Ooms\", role = c(\"aut\", \"cre\"), email = \"[email protected]\",\ncomment = c(ORC"| __truncated__
 $ Description       : chr "An R interface to V8 <https://v8.dev>: Google's open\nsource JavaScript and WebAssembly engine. This package ca"| __truncated__
 $ License           : chr "MIT + file LICENSE"
 $ URL               : chr "https://jeroen.r-universe.dev/V8"
 $ BugReports        : chr "https://github.com/jeroen/v8/issues"
 $ SystemRequirements: chr "V8 engine version 6+ is needed for ES6 and WASM\nsupport. On Linux you can build against libv8-dev (Debian) or\"| __truncated__
 $ NeedsCompilation  : chr "yes"
 $ VignetteBuilder   : chr "knitr"
 $ RoxygenNote       : chr "7.3.1"
 $ Roxygen           : chr "list(load = \"installed\", markdown = TRUE)"
 $ Language          : chr "en-US"
 $ Encoding          : chr "UTF-8"
 $ Biarch            : chr "true"
 $ Repository        : chr "https://jeroen.r-universe.dev"
 $ RemoteUrl         : chr "https://github.com/jeroen/v8"
 $ RemoteRef         : chr "HEAD"
 $ RemoteSha         : chr "8d5312779708b6bc13970b199363296d0776fb86"
 $ Packaged          :List of 2
 $ Author            : chr "Jeroen Ooms [aut, cre] (<https://orcid.org/0000-0002-4035-0289>),\nJan Marvin Garbuszus [ctb]"
 $ Maintainer        : chr "Jeroen Ooms <[email protected]>"
 $ MD5sum            : chr "b3e85490797b360b69df1da61f516c6c"
 $ _user             : chr "jeroen"
 $ _type             : chr "src"
 $ _file             : chr "V8_6.0.0.tar.gz"
 $ _fileid           : chr "b3e85490797b360b69df1da61f516c6c"
 $ _filesize         : int 196083
 $ _sha256           : chr "57e4fdd75a66b70e1acfb642252435e7b9f67e1deb596ce7c3979b276712df67"
 $ _created          : chr "2024-10-12T10:13:37.000Z"
 $ _published        : chr "2024-10-12T21:19:45.180Z"
 $ _buildurl         : chr "https://github.com/r-universe/jeroen/actions/runs/11304816202"
 $ _status           : chr "success"
 $ _windevel         : chr "success"
 $ _linuxdevel       : chr "success"
 $ _wasmbinary       : chr "none"
 $ _macbinary        : chr "success"
 $ _winbinary        : chr "success"
 $ _pkgdocs          : chr "skipped"
 $ _upstream         : chr "https://github.com/jeroen/v8"
 $ _commit           :List of 5
 $ _maintainer       :List of 6
 $ _distro           : chr "noble"
 $ _host             : chr "GitHub-Actions"
 $ _registered       : logi TRUE
 $ _dependencies     :List of 8
 $ _owner            : chr "jeroen"
 $ _selfowned        : logi TRUE
 $ _usedby           : int 311
 $ _updates          :List of 13
 $ _tags             : list()
 $ _topics           :List of 3
 $ _stars            : int 199
 $ _contributions    :List of 10
 $ _userbio          :List of 4
 $ _downloads        :List of 2
 $ _mentions         : int 2
 $ _devurl           : chr "https://github.com/jeroen/v8"
 $ _searchresults    : int 496
 $ _assets           :List of 11
 $ _homeurl          : chr "https://github.com/jeroen/v8"
 $ _realowner        : chr "jeroen"
 $ _cranurl          : logi TRUE
 $ _releases         :List of 49
 $ _exports          :List of 6
 $ _help             :List of 3
 $ _readme           : chr "https://github.com/jeroen/v8/raw/HEAD/README.md"
 $ _rundeps          :List of 3
 $ _sysdeps          :List of 2
 $ _vignettes        :List of 2
 $ _score            : num 15.5
 $ _indexed          : logi TRUE
 $ _nocasepkg        : chr "v8"
 $ _universes        :List of 1
 $ _binaries         :List of 9

6.1.5 Search in an universe

URL: https://<username>.r-universe.dev/api/search Parameters:

  • q: the query string. You can use the advanced fields.
  • limit: the number of results to return, by default a maximum of 100 but you can
    • do a first request to determine the total number of hits N, returned in the response as the total field,
    • then do a second request using limit=N.

Example:

How many packages in the rOpenSci universe depend on httr2?

deps <- httr2::request("https://ropensci.r-universe.dev/api/search") |>
  httr2::req_url_query(q = 'needs:httr2') |> # packages depending on {httr2}
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()

str(deps, max.level = 1)
List of 5
 $ results:List of 33
 $ query  :List of 2
 $ skip   : int 0
 $ limit  : int 100
 $ total  : int 33
deps$total
[1] 33

Or:

deps <- universe::universe_search("ropensci", query = 'needs:httr2')
# The result is a list of packages
str(deps, max.level = 1)
List of 5
 $ results:List of 33
 $ query  :List of 2
 $ skip   : int 0
 $ limit  : int 100
 $ total  : int 33
deps$total
[1] 33

6.2 Search all universes

URL: https://r-universe.dev/api/search Parameters:

  • q: the query string. You can use the advanced fields.
  • limit: the number of results to return, by default a maximum of 100 but you can
    • do a first request to determine the total number of hits N, returned in the response as the total field,
    • then do a second request using limit=N.

Example:

packages <- httr2::request("https://r-universe.dev/api/search") |>
  httr2::req_url_query(q = '"weather data"') |>
  httr2::req_user_agent("R-universe docs") |>
  httr2::req_perform() |>
  httr2::resp_body_json()
str(packages, max.level = 1)
List of 5
 $ results:List of 69
 $ query  :List of 1
 $ skip   : int 0
 $ limit  : int 100
 $ total  : int 69
str(packages$results[[1]])
List of 16
 $ _id        : chr "6715cb55035af9e85905e9ea"
 $ Package    : chr "weatherOz"
 $ Title      : chr "An API Client for Australian Weather and Climate Data Resources"
 $ Description: chr "Provides automated downloading, parsing and formatting of\nweather data for Australia through API endpoints pro"| __truncated__
 $ _user      : chr "ropensci"
 $ _owner     : chr "ropensci"
 $ _usedby    : int 0
 $ _score     : num 8.41
 $ _uuid      : int 1200269
 $ maintainer :List of 5
  ..$ name : chr "Rodrigo Pires"
  ..$ email: chr "[email protected]"
  ..$ login: chr "bozaah"
  ..$ uuid : int 11730095
  ..$ orcid: chr "0000-0001-7384-6849"
 $ updated    : int 1729479932
 $ stars      : int 23
 $ topics     :List of 19
  ..$ : chr "dpird"
  ..$ : chr "bom"
  ..$ : chr "meteorological-data"
  ..$ : chr "weather-forecast"
  ..$ : chr "australia"
  ..$ : chr "weather"
  ..$ : chr "weather-data"
  ..$ : chr "meteorology"
  ..$ : chr "western-australia"
  ..$ : chr "australia-bureau-of-meteorology"
  ..$ : chr "western-australia-agriculture"
  ..$ : chr "australia-agriculture"
  ..$ : chr "australia-climate"
  ..$ : chr "australia-weather"
  ..$ : chr "api-client"
  ..$ : chr "climate"
  ..$ : chr "data"
  ..$ : chr "rainfall"
  ..$ : chr "weather-api"
 $ rundeps    :List of 55
  ..$ : chr "abind"
  ..$ : chr "apsimx"
  ..$ : chr "bit"
  ..$ : chr "bit64"
  ..$ : chr "blob"
  ..$ : chr "cachem"
  ..$ : chr "class"
  ..$ : chr "classInt"
  ..$ : chr "cli"
  ..$ : chr "clock"
  ..$ : chr "cpp11"
  ..$ : chr "crayon"
  ..$ : chr "crul"
  ..$ : chr "curl"
  ..$ : chr "data.table"
  ..$ : chr "DBI"
  ..$ : chr "e1071"
  ..$ : chr "evaluate"
  ..$ : chr "fastmap"
  ..$ : chr "foreign"
  ..$ : chr "generics"
  ..$ : chr "glue"
  ..$ : chr "highr"
  ..$ : chr "httpcode"
  ..$ : chr "jsonlite"
  ..$ : chr "KernSmooth"
  ..$ : chr "knitr"
  ..$ : chr "lifecycle"
  ..$ : chr "lubridate"
  ..$ : chr "magick"
  ..$ : chr "magrittr"
  ..$ : chr "MASS"
  ..$ : chr "memoise"
  ..$ : chr "mime"
  ..$ : chr "pkgconfig"
  ..$ : chr "plogr"
  ..$ : chr "proxy"
  ..$ : chr "R6"
  ..$ : chr "Rcpp"
  ..$ : chr "rlang"
  ..$ : chr "RSQLite"
  ..$ : chr "s2"
  ..$ : chr "sf"
  ..$ : chr "stars"
  ..$ : chr "terra"
  ..$ : chr "timechange"
  ..$ : chr "triebeard"
  ..$ : chr "tzdb"
  ..$ : chr "units"
  ..$ : chr "urltools"
  ..$ : chr "vctrs"
  ..$ : chr "wk"
  ..$ : chr "xfun"
  ..$ : chr "xml2"
  ..$ : chr "yaml"
 $ match      : num 170
 $ rank       : num 1433

Or:

packages <- universe::global_search(query = '"weather data"', limit = 100L)
str(packages, max.level = 1)
List of 5
 $ results:List of 69
 $ query  :List of 1
 $ skip   : int 0
 $ limit  : int 100
 $ total  : int 69
str(packages$results[[1]])
List of 16
 $ _id        : chr "6715cb55035af9e85905e9ea"
 $ Package    : chr "weatherOz"
 $ Title      : chr "An API Client for Australian Weather and Climate Data Resources"
 $ Description: chr "Provides automated downloading, parsing and formatting of\nweather data for Australia through API endpoints pro"| __truncated__
 $ _user      : chr "ropensci"
 $ _owner     : chr "ropensci"
 $ _usedby    : int 0
 $ _score     : num 8.41
 $ _uuid      : int 1200269
 $ maintainer :List of 5
  ..$ name : chr "Rodrigo Pires"
  ..$ email: chr "[email protected]"
  ..$ login: chr "bozaah"
  ..$ uuid : int 11730095
  ..$ orcid: chr "0000-0001-7384-6849"
 $ updated    : int 1729479932
 $ stars      : int 23
 $ topics     :List of 19
  ..$ : chr "dpird"
  ..$ : chr "bom"
  ..$ : chr "meteorological-data"
  ..$ : chr "weather-forecast"
  ..$ : chr "australia"
  ..$ : chr "weather"
  ..$ : chr "weather-data"
  ..$ : chr "meteorology"
  ..$ : chr "western-australia"
  ..$ : chr "australia-bureau-of-meteorology"
  ..$ : chr "western-australia-agriculture"
  ..$ : chr "australia-agriculture"
  ..$ : chr "australia-climate"
  ..$ : chr "australia-weather"
  ..$ : chr "api-client"
  ..$ : chr "climate"
  ..$ : chr "data"
  ..$ : chr "rainfall"
  ..$ : chr "weather-api"
 $ rundeps    :List of 55
  ..$ : chr "abind"
  ..$ : chr "apsimx"
  ..$ : chr "bit"
  ..$ : chr "bit64"
  ..$ : chr "blob"
  ..$ : chr "cachem"
  ..$ : chr "class"
  ..$ : chr "classInt"
  ..$ : chr "cli"
  ..$ : chr "clock"
  ..$ : chr "cpp11"
  ..$ : chr "crayon"
  ..$ : chr "crul"
  ..$ : chr "curl"
  ..$ : chr "data.table"
  ..$ : chr "DBI"
  ..$ : chr "e1071"
  ..$ : chr "evaluate"
  ..$ : chr "fastmap"
  ..$ : chr "foreign"
  ..$ : chr "generics"
  ..$ : chr "glue"
  ..$ : chr "highr"
  ..$ : chr "httpcode"
  ..$ : chr "jsonlite"
  ..$ : chr "KernSmooth"
  ..$ : chr "knitr"
  ..$ : chr "lifecycle"
  ..$ : chr "lubridate"
  ..$ : chr "magick"
  ..$ : chr "magrittr"
  ..$ : chr "MASS"
  ..$ : chr "memoise"
  ..$ : chr "mime"
  ..$ : chr "pkgconfig"
  ..$ : chr "plogr"
  ..$ : chr "proxy"
  ..$ : chr "R6"
  ..$ : chr "Rcpp"
  ..$ : chr "rlang"
  ..$ : chr "RSQLite"
  ..$ : chr "s2"
  ..$ : chr "sf"
  ..$ : chr "stars"
  ..$ : chr "terra"
  ..$ : chr "timechange"
  ..$ : chr "triebeard"
  ..$ : chr "tzdb"
  ..$ : chr "units"
  ..$ : chr "urltools"
  ..$ : chr "vctrs"
  ..$ : chr "wk"
  ..$ : chr "xfun"
  ..$ : chr "xml2"
  ..$ : chr "yaml"
 $ match      : num 170
 $ rank       : num 1433

Note that searching globally only returns “indexed” packages: if a package is included in several universes, it still shows up only once in search results because of our deduplication efforts.