Skip to contents

Search PLoS Journals authors.


  q = NULL,
  fl = "id",
  fq = NULL,
  sort = NULL,
  start = 0,
  limit = 10,
  sleep = 6,
  errors = "simple",
  proxy = NULL,
  callopts = NULL,
  progress = NULL,



Search terms (character). You can search on specific fields by doing 'field:your query'. For example, a real query on a specific field would be 'author:Smith'.


Fields to return from search (character) [e.g., 'id,title'], any combination of search fields (see the dataset plosfields)


List specific fields to filter the query on (if NA, all queried). The options for this parameter are the same as those for the fl parameter. Note that using this parameter doesn't influence the actual query, but is used to filter the results to a subset of those you want returned. For example, if you want full articles only, you can do 'doc_type:full'. In another example, if you want only results from the journal PLOS One, you can do 'journal_key:PLoSONE'. See journalnamekey for journal abbreviations.


Sort results according to a particular field, and specify ascending (asc) or descending (desc) after a space; see examples. For example, to sort the counter_total_all field in descending fashion, do sort='counter_total_all desc'


Record to start at (used in combination with limit when you need to cycle through more results than the max allowed=1000). See Pagination below


Number of results to return (integer). Setting limit=0 returns only metadata. See Pagination below


Number of seconds to wait between requests. No need to use this for a single call to searchplos. However, if you are using searchplos in a loop or lapply type call, do sleep parameter is used to prevent your IP address from being blocked. You can only do 10 requests per minute, so one request every 6 seconds is about right.


(character) One of simple or complete. Simple gives http code and error message on an error, while complete gives both http code and error message, and stack trace, if available.


List of arguments for a proxy connection, including one or more of: url, port, username, password, and auth. See proxy for help, which is used to construct the proxy connection.


(list) optional curl options passed to HttpClient


a function with logic for printing a progress bar for an HTTP request, ultimately passed down to curl. only supports httr::progress()


Additional Solr arguments


Author names, in addition to any other fields requested in a data.frame.




Read more about faceting here: url

Website vs. API behavior

Don't be surprised if queries you perform in a scripting language, like using rplos in R, give different results than when searching for articles on the PLOS website. I am not sure what exact defaults they use on their website. There are a few things to consider. You can tweak which types of articles are returned: Try using the article_type filter in the fq parameter. For which journal to search, e.g., do 'journal_key:PLoSONE'. See journalnamekey() for journal abbreviations.

Phrase searching

To search phrases, e.g., synthetic biology as a single item, rather than separate occurrences of synthetic and biology, simply put double quotes around the phrase. For example, to search for cases of synthetic biology, do searchplos(q = '"synthetic biology"').

You can modify phrase searches as well. For example, searchplos(q = '"synthetic biology" ~ 10') asks for cases of synthetic biology within 10 words of each other. See examples.


The searchplos function and the many functions that are wrappers around searchplos all do paginatino internally for you. That is, if you request for example, 2000 results, the max you can get in any one request is 1000, so we'll do two requests for you. And so on for larger requests.

You can always do your own paginatino by doing a lapply type call or a for loop to cycle through pages of results.


if (FALSE) {
plosauthor('Smith', 'id', limit=50)
plosauthor(q='Smith', fl=c('id','author'), limit=10)