Tracking articles is a key analytical task for any modern publisher. It enables:
The process is as follows:
The Article Tracker API can be used in a number of ways.
Subscribers can simply query the API. Sample code is given below. If you would prefer not to use the API directly, or are unable to do so, get in touch and we can arrange for the data to be processed offline.
Here some example queries representing ArXiv preprints are shown. This code will allow users to find where these preprints were published. (Note that the โDecision Datetimeโ is simply a made-up value in this case since ArXiv does not make decisions.)
Note the JSON format of queries. This format is strict and, if it is not adhered to, no results will be returned by the Article Tracker.
A detailed description of the schema is below.
import requests
url = "https://article-tracker.p.rapidapi.com/"
payload = {"payload": {
"articles": [
{
"Submission Datetime": "2021-04-26",
"Decision Datetime": "2021-04-26",
"Final Decision": "Not applicable",
"Manuscript ID": "10.1051/0004-6361/202140668",
"Manuscript Title": "Extreme adaptive optics astrometry of R136. Searching for high proper motion stars",
"Journal Name": "arxiv",
"Author Names": "Khorrami, Zeinab; Langlois, M.; Vakili, F.; Clark, P. C.; Buckner, A. S. M.; Gonzalez, M.; Crowther, P.; Wunsch, R.; Palous, J.; Boccaletti, A.; Lumsden, S.; Moraux, E."
},
{
"Submission Datetime": "2019-02-25",
"Decision Datetime": "2019-02-25",
"Final Decision": "Not applicable",
"Manuscript ID": "10.3847/2041-8213/ab0c9c",
"Manuscript Title": "Extremely Low Molecular Gas Content in a Compact, Quiescent Galaxy at z=1.522",
"Journal Name": "arxiv",
"Author Names": "Bezanson, Rachel; Spilker, Justin; Williams, Christina C.; Whitaker, Katherine E.; Narayanan, Desika; Weiner, Benjamin; Franx, Marijn"
},
{
"Submission Datetime": "2019-09-08",
"Decision Datetime": "2019-09-08",
"Final Decision": "Not applicable",
"Manuscript ID": "10.1137/20m1347747",
"Manuscript Title": "Counting weighted independent sets beyond the permanent",
"Journal Name": "arxiv",
"Author Names": "Dyer, Martin; Jerrum, Mark; Muller, Haiko; Vuskovic, Kristina"
}
],
"email": "myname@example.com"
}}
headers = {
"X-RapidAPI-Host": "article-tracker.p.rapidapi.com",
"X-RapidAPI-Key": os.getenv("X-RAPIDAPI-KEY"),
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
const axios = require("axios");
const options = {
method: 'POST',
url: 'https://article-tracker.p.rapidapi.com/',
headers: {
'X-RapidAPI-Host': 'article-tracker.p.rapidapi.com',
'X-RapidAPI-Key': x_rapidapi_key,
'Content-Type': 'application/json'
},
'{"payload":{"articles":[{"Submission Datetime":"2021-04-26","Decision Datetime":"2021-04-26","Final Decision":"Not applicable","Manuscript ID":"10.1051/0004-6361/202140668","Manuscript Title":"Extreme adaptive optics astrometry of R136. Searching for high proper motion stars","Journal Name":"arxiv","Author Names":"Khorrami, Zeinab; Langlois, M.; Vakili, F.; Clark, P. C.; Buckner, A. S. M.; Gonzalez, M.; Crowther, P.; Wunsch, R.; Palous, J.; Boccaletti, A.; Lumsden, S.; Moraux, E."},{"Submission Datetime":"2019-02-25","Decision Datetime":"2019-02-25","Final Decision":"Not applicable","Manuscript ID":"10.3847/2041-8213/ab0c9c","Manuscript Title":"Extremely Low Molecular Gas Content in a Compact, Quiescent Galaxy at z=1.522","Journal Name":"arxiv","Author Names":"Bezanson, Rachel; Spilker, Justin; Williams, Christina C.; Whitaker, Katherine E.; Narayanan, Desika; Weiner, Benjamin; Franx, Marijn"},{"Submission Datetime":"2019-09-08","Decision Datetime":"2019-09-08","Final Decision":"Not applicable","Manuscript ID":"10.1137/20m1347747","Manuscript Title":"Counting weighted independent sets beyond the permanent","Journal Name":"arxiv","Author Names":"Dyer, Martin; Jerrum, Mark; Muller, Haiko; Vuskovic, Kristina"}],"email":"myname@example.com"}}'
};
axios.request(options).then(function (response) {
console.log(response.data);
}).catch(function (error) {
console.error(error);
});
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
String value = "{\"payload\":{\"articles\":[{\"Submission Datetime\": \"2021-04-26\", \"Decision Datetime\": \"2021-04-26\", \"Final Decision\": \"Not applicable\", \"Manuscript ID\": \"10.1051/0004-6361/202140668\", \"Manuscript Title\": \"Extreme adaptive optics astrometry of R136. Searching for high proper motion stars\", \"Journal Name\": \"arxiv\", \"Author Names\": \"Khorrami, Zeinab; Langlois, M.; Vakili, F.; Clark, P. C.; Buckner, A. S. M.; Gonzalez, M.; Crowther, P.; Wunsch, R.; Palous, J.; Boccaletti, A.; Lumsden, S.; Moraux, E.\"}, {\"Submission Datetime\": \"2019-02-25\", \"Decision Datetime\": \"2019-02-25\", \"Final Decision\": \"Not applicable\", \"Manuscript ID\": \"10.3847/2041-8213/ab0c9c\", \"Manuscript Title\": \"Extremely Low Molecular Gas Content in a Compact, Quiescent Galaxy at z=1.522\", \"Journal Name\": \"arxiv\", \"Author Names\": \"Bezanson, Rachel; Spilker, Justin; Williams, Christina C.; Whitaker, Katherine E.; Narayanan, Desika; Weiner, Benjamin; Franx, Marijn\"}, {\"Submission Datetime\": \"2019-09-08\", \"Decision Datetime\": \"2019-09-08\", \"Final Decision\": \"Not applicable\", \"Manuscript ID\": \"10.1137/20m1347747\", \"Manuscript Title\": \"Counting weighted independent sets beyond the permanent\", \"Journal Name\": \"arxiv\", \"Author Names\": \"Dyer, Martin; Jerrum, Mark; Muller, Haiko; Vuskovic, Kristina\"}],\"email\":\"myname@example.com\"}}";
RequestBody body = RequestBody.create(mediaType, value);
Request request = new Request.Builder()
.url("https://article-tracker.p.rapidapi.com/")
.post(body)
.addHeader("X-RapidAPI-Host", "article-tracker.p.rapidapi.com")
.addHeader("X-RapidAPI-Key", x_rapidapi_key)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
Itโs worth understanding some details of how the API works.
Users make requests which are sent to Crossref.
Crossref limit requests to 50 per second maximum. The Article Tracker will also enforce this same limit. It is impossible to query the Article Tracker for more than 50 articles in 1 second.
Crossref results are then passed through a complex machine-learning pipeline in order to determine which user queries match which published articles.
This data is returned to the user.
If the submitted data is poorly formed, or the tracker finds no results, it will return an empty response.
If using the tracker for rejected-article-tracking note that it can take several months or years for rejected articles to be published, so it is quite possible to receive an empty response when searching for recently rejected articles.
No more than 50 articles can be requested in 1 single request.
Request limits can be multiplied by 50 to get the total number of articles that can be requested under a particular plan. For example: if a plan allows 20,000 requests in 1 month, then the user can request 20,000 * 50 = 1,000,000 articles in a month.
Users can not make more than 1 request per second.
The speed of requests to the Crossref API is also variable and not within our control. Users should expect to be able to query 500 articles per minute, but this is not guaranteed. Not that Crossref provide faster responses to users who include an email address in requests. This is why the article tracker requires an โemailโ value to be given.
{
"type": "object",
"properties": {
"payload": {
"type": "object",
"properties": {
"articles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"Submission Datetime": {
"type": "string"
},
"Decision Datetime": {
"type": "string"
},
"Final Decision": {
"type": "string"
},
"Manuscript ID": {
"type": "string"
},
"Manuscript Title": {
"type": "string"
},
"Journal Name": {
"type": "string"
},
"Author Names": {
"type": "string"
}
}
}
},
"email": {
"type": "string"
}
}
}
},
"externalDocs": {
"description": "Random arXiv preprints"
}
}