20

Is there a way to get the DOI (Document Object Identifier) of a research paper when its title is available?

I am preparing a reference database I could not get the URL of all the references. So, I tried to search online but could not get to anything. I will appreciate if anyone uses such tool/website or has any idea.

EDIT I am sorry but my problem is little bigger. I need to automatically (not manually) get them from the websites. Of course, I do not want to do it for more than 50 papers if that is legal/allowed.

2

8 Answers 8

8

Reposted from StackOverflow:

Here are three options

CSV upload to crossref.org

CrossRef allows you to upload the linked csv directly, and then performs a text query here: http://www.crossref.org/stqUpload/

However, only 18 of the 250 queries (~7%) returned a doi.

XML Query

Based on the answer on SO by Brian Diggs, here an attempt that does 95% of the work - toward writing the xml-based query, it still has a few bugs that require some deletion using sed. But the biggest problem that my "session timed out" when the query was submitted.

the xml syntax includes an option to use fuzzy matching.

the doiquery.xml contains the template text in @Brians answer; the citations.csv is linked above. (using R, a sample csv can be found on I have posted the first few lines of the table on google docs, or the csv version (not all records have a doi))

library(XML)
doiquery.xml <- xmlTreeParse('doiquery.xml')

query <- doiquery.xml$doc$children$query_batch[["body"]]

citations <- read.csv("citations.csv")

new.query <- function(citation, query = query){
  xmlValue(query[["author"]]) <- as.character(citation$author)
  xmlValue(query[["year"]]) <- as.character(citation$year)
  xmlValue(query[["article_title"]][["text"]]) <- citation$title
  xmlValue(query[["journal_title"]]) <- citation$journal
  return(query)
}


for (i in 1:nrow(citations)){
  q <- addChildren(q, add.query(citations[i,]))
}
axml <- addChildren(doiquery.xml$doc$children$query_batch, q )

saveXML(axml, file = 'foo.xml')

CSV to XML Converter

Creativyst software provides a web based CSV to XML converter.

Steps:

  1. Enter columnames in ElementID's field,
  2. "document" in DocID field
  3. "query" in RowID field
  4. Copy / paste csv in "Input CSV file".
  5. Click Convert

Also, see this related question: https://stackoverflow.com/questions/9880808/shell-script-to-parse-csv-to-an-xml-query

1
  • 1
    This crossref page allows to directly input text query instead of uploading filey. To check for only a few papers, this is convenient. Commented Sep 20, 2021 at 6:54
4

So you can do this easily using e.g. Web of Science, and probably other bibliographic databases available through your library.

If that isn't an option, a little google search lead me to the DOI website FAQ, and question 3 is yours. There are 8 registration agencies for DOI, and no single way to search across DOI using document metadata. I tested the free crossref service and it was unable to find one of my articles because that journal doesn't use the crossref agency. One of the other agencies has that information, but you might have to search all of them to find it.

Finally, I tried Google Scholar, which will work if the article in question has reference information available online. That depends on the publisher.

2
  • I also had the same problem with crossref that I tried before posting this question
    – Stat-R
    Commented Jun 26, 2012 at 16:37
  • I think Papers or Mendeley mentioned by @aeismail are the way to go - they claim to collect metadata automatically.
    – atiretoo
    Commented Jun 26, 2012 at 16:40
3

The R package fulltext allows you to search DOI's given a title:

library(fulltext)
res1 <- ft_search(query = "Estimating Summer Nutrient Concentrations in
        Northeastern Lakes from SPARROW", from = "plos")
res1 <- ft_links(res1)
res1$plos$ids

[1] "10.1371/journal.pone.0081457" "10.1371/journal.pone.0030492" "10.1371/journal.pone.0049220"

2

Resources like Web of Knowledge should have information on the DOI's for any titles that have them available (which should be "all of them" for anything that's been published in the last few years).

Tools like Papers or Mendeley should also be able to "harvest" DOI's for published papers.

2
  • In response to your edit: both Papers and Mendeley should be able to retrieve the metadata for you using the title, unless the paper has just been released (as it might take a while to be archived by various search engines).
    – aeismail
    Commented Jun 26, 2012 at 20:56
  • 1
    I tried but with no success. I will be grateful if you or someone can tell me a website where we can also fetch/download the link to the documents/references. I will do my search again and not use the existing reference file
    – Stat-R
    Commented Jun 26, 2012 at 21:37
1

Easier, code-free:

At this time, on the CrossRef homepage, there is a text-input field "Metadata search". It says:

Search CrossRef's database of 71 million records for authors, titles, DOIs, ORCIDs, ISSNs, FundRefs, license URIs, etc. You can even paste entire references into the search box and discover their DOIs.

I have tried it out only for one DOI of which I happen to know that a record exists in the crossref database.

You can also use the CrossRef search site and paste the title of the paper there.

0

Update in 2022: Easiest for me was using the website, where you can just copy and paste your references: https://search.crossref.org/references

I also looked at a few python libraries to interact with the crossref REST API, e.g.,

https://pypi.org/project/habanero/

https://gitlab.com/crossref/crossref_commons_py

The libraries were easy to use in general, but it was not straight forward how to get the DOI based on a title and there were not really any good examples for this task.

0

As J. Schneider mentions, you can use "works" field query from crossref api. (take a look at Richard Feynman example). It returns a JSON file. You can extract DOI from it.

1
  • As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.
    – Community Bot
    Commented Jul 5, 2022 at 13:57
0

As the author of pysotsog I am recommending that library. It searches wikidata at this time and will use other bibliographic databases such as crossref, dblp, library catalogs and so on in the future it's intended to use general search engines as well. The concept is to be a specific search engine for scientific content see sotsog search strategy.

Here is a command line example for the title "We Need a Magna Carta for the Internet" by Tim Berners-Lee with the DOI doi=10.1111/NPQU.11475.

sotsog We Need a Magna Carta for the Internet
We Need a Magna Carta for the Internet(Q55693402):✅
Paper ➞ We Need a Magna Carta for the Internet:
  wikiDataId=http://www.wikidata.org/entity/Q55693402
  doi=10.1111/NPQU.11475
  publication_date=2014-07-01 00:00:00
opening https://scholia.toolforge.org/work/Q55693402 in browser

There is also a demo available at http://sotsog.bitplan.com Screenshot which points to the scholia page of the relevant article.

In simple cases like the one above you can directly search wikidata and use the wikibase-cli command line tools for it by searching for the DOI property.

First step - find the paper wikidata entry with a full text search

wd search We Need a Magna Carta for the Internet
Q55693402  We Need a Magna Carta for the Internet

Query the DOI

wd query -s Q55693402 -p P356
10.1111/NPQU.11475

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .