downloads.search()

The search() function of the downloads API queries the DownloadItems available in the browser's downloads manager, and returns those that match the specified search criteria.

This is an asynchronous function that returns a Promise.

Syntax

js
let searching = browser.downloads.search(query);

Parameters

query

A downloads.DownloadQuery object.

Return value

A Promise. The promise is fulfilled with an array of downloads.DownloadItem objects that match the given criteria.

Examples

In general, you restrict the items retrieved using the query parameter.

Get downloads matching "query"

js
function logDownloads(downloads) {
  for (const download of downloads) {
    console.log(download.id);
    console.log(download.url);
  }
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.downloads
  .search({
    query: ["imgur"],
  })
  .then(logDownloads, onError);

Get a specific item

To get a specific DownloadItem, the easiest way is to set only the id field, as seen in the snippet below:

js
function logDownloads(downloads) {
  for (const download of downloads) {
    console.log(download.id);
    console.log(download.url);
  }
}

function onError(error) {
  console.log(`Error: ${error}`);
}

const id = 13;

browser.downloads.search({ id }).then(logDownloads, onError);

Get all downloads

If you want to return all DownloadItems, set query to an empty object.

js
function logDownloads(downloads) {
  for (const download of downloads) {
    console.log(download.id);
    console.log(download.url);
  }
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.downloads.search({}).then(logDownloads, onError);

Get the most recent download

You can get the most recent download by specifying the following search parameters:

js
function logDownloads(downloads) {
  for (const download of downloads) {
    console.log(download.id);
    console.log(download.url);
  }
}

function onError(error) {
  console.log(`Error: ${error}`);
}

browser.downloads
  .search({
    limit: 1,
    orderBy: ["-startTime"],
  })
  .then(logDownloads, onError);

You can see this code in action in our latest-download example.

Example extensions

Browser compatibility

desktop mobile
Chrome
Edge
Firefox
Opera
Safari
Firefox for Android
Safari on iOS
search
Chrome – Full support
Chrome 22 (Release date: 2012-09-25)
footnote Full support
Edge – Full support
Edge 79 (Release date: 2020-01-15)
footnote Full support
Firefox – Full support
Firefox 47 (Release date: 2016-06-07)
footnote Full support
Opera – Full support
Opera 15 (Release date: 2013-07-02)
footnote Full support
Safari – No support
Safari
footnote No support
Firefox for Android – No support
Firefox for Android 48 – 68 (Release date: 2016-08-02)
footnote Removed in 79 and later
Safari on iOS – No support
Safari on iOS
footnote No support

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Note: This API is based on Chromium's chrome.downloads API.