Scientist’s (formerly Assay Depot) JSON API gives read-only access to vendors and services. To use the API you must authenticate using OAuth2.
The API is accessible at /api
on whatever website you use. For instance, public marketplace customers (users of http://app.scientist.com) can access the api at:
https://app.scientist.com/api
Vendors can access the api at:
https://backoffice.scientist.com/api
And private RX customers can access the api using their custom URL:
https://[custom].scientist.com/api
The API requires the user to authenticate. To use the API you must authenticate using OAuth2. Scientist supports both Authorization Code and Client Credential workflows.
You should specify the authentication token using the Authorization
header. For instance:
curl --header "Authorization: Bearer 123456" https://app.scientist.com/api/[resource].json
or in Ruby
RestClient.get("https://app.scientist.com/api/[resource].json", "Authorization" => "Bearer 123456")
The authentication token is only strictly required for the first request of the session, but you may include it with every request. All examples assume the user has successfully authenticated.
There are two functions you can perform on vendors, search and get.
Search queries take the form:
https://app.scientist.com/api/providers.json?q=[query term(s)]
For example, to search for vendors that match the term “antibody”, you would use the url:
https://app.scientist.com/api/providers.json?q=antibody
The system will search for the word antibody or it’s synonyms in all applicable vendor fields.
page | 1 | When there are more results than can fit on a single page, you can retrieve different pages by changing this parameter. |
per_page | 25 | You can change the number of results returned per request by changing this parameter. |
sort_by | nil (relevance) | You can change the order in which results are returned. This orders the entire result set, not just the current page. |
sort_order | desc | Change the direction of the result set |
facets | nil | You can refine the result set by specifying facet values. See the vendor search facets section for more information. |
Vendor search results can be refined using facets. To apply a facet to a search use a URL in the following format:
https://app.scientist.com/api/providers.json?facets[facet_name][]=facet_value
For instance, if you wanted find vendors that are members of BIOCOM, you would use the following URL:
https://app.scientist.com/api/providers.json?facets[professional_associations][]=BIOCOM
You may specify multiple facets in a single query. It’s important to note, unlike the query string, facet values must match exactly.
There are numerous facets that can be specified. Below is a table of a few interesting facets. Search results contain lists of all the applicable facet names and values, you should consult these results for a more complete list.
professional_associations |
|
Narrow the results to only vendors that are members of a particular association. Currently, only BIOCOM is supported. |
category_names |
|
Narrow the results to only vendors who appear in a certain discipline, category or subcategory on the site. |
certifications |
|
Narrow the results to only vendors who have specific certifications. |
countries_facet |
|
Narrow the results to only vendors who have offices or laboratories in certain countries. |
This will return:
{
"total":1062,
"page":1,
"per_page":25,
"query_time":0.021877621,
"facets": {
"annotations":{},
"certifications":{
"GLP":201,
"GMP":142,
"ISO 9001":55,
"AAALAC":29,
...
},
"countries_facet": {
"United States":588,
"Germany":84,
"Great Britain":71,
"Canada":44,
...
}
},
"provider_refs": [
{
"id":"ae82d9d2c9dd4902be154a3202646689",
"slug":"assay-depot",
"name":"Assay Depot",
"snippet":"Assay Depot builds and operates Research Exchanges (RXs), like this one, that make it easy for researchers to find and order the research services they need, and for CROs to engage researchers directly. ",
"permission":"in-network",
"score":3.5326707,
"locations": [
{
"text":"433 Glencrest, Solana Beach, California, USA",
"latitude":32.99959,
"longitude":-117.262905
},
...
],
"urls": {
"storefront":"https://app.scientist.com/provider/assay-depot",
"backoffice":"https://backoffice.scientist.com/providers/assay-depot/edit"
}
},
{
"id":"5c4a0ddac7182dcdd7d1140b24770137",
"slug":"assay-biotechnology-company",
"name":"Assay Biotechnology Company",
"snippet":"Assay Biotechnology Company supplies antibodies, proteins, assay kits, cells, and media products.",
"permission":"out-of-network",
"score":2.8261366,
"locations": [
{
"text":"562 E Weddell Dr Ste 8\nSunnyvale, CA 94089\nUSA",
"latitude":37.3987777,
"longitude":-122.012603
},
...
],
"urls": {
"storefront":"https://app.scientist.com/provider/assay-biotechnology-company",
"backoffice":"https://backoffice.scientist.com/providers/assay-biotechnology-company/edit"
}
},
...
]
}
Get queries take the form:
https://app.scientist.com/api/providers/[provider_id].json
This will return:
{
"query_time":0.026702252,
"provider":{
"id":"ae82d9d2c9dd4902be154a3202646689",
"slug":"assay-depot",
"name":"Assay Depot",
"phone_number":"(877)644-3044",
"website":"http://app.scientist.com",
"service_areas":[],
"headquarters":"San Diego,
California,
USA",
"laboratories":[],
"year_established":"2007",
"number_of_employees":"10",
"description":
"!<http://backoffice.scientist.com/assets/depot-wares/ae82d9d2c9dd4902be154a3202646689/logo.png(Assay Depot Logo)!:http://app.scientist.com\r\n\r\np<>. *Assay Depot* has created the world\u2019s largest network of public and private cloud-based research exchanges. Researchers from around the world use the public research exchange to find,
compare and purchase research services,
...
",
"keywords":[],
"certifications":[],
"professional_associations":[],
"permission":"in-network",
"origin":"central",
"green":false,
"green_explaination":null,
"diversity":false,
"diversity_explaination":null,
"created_at":"2009-07-15T22:11:12+00:00",
"updated_at":"2012-05-11T23:23:40Z",
"urls": {
"storefront":"https://app.scientist.com/provider/assay-depot",
"backoffice":"https://backoffice.scientist.com/providers/assay-depot/edit"
}
}
}
There are two functions you can perform on services, search and get.
Search queries take the form:
https://app.scientist.com/api/wares.json?q=[query term(s)]
For example, to search for services that match the term “peptide”, you would use the url:
https://app.scientist.com/api/wares.json?q=peptide
The system will search for the word antibody or it’s synonyms in all applicable service fields.
page | 1 | When there are more results than can fit on a single page, you can retrieve different pages by changing this parameter. |
per_page | 25 | You can change the number of results returned per request by changing this parameter. |
sort_by | nil (relevance) | You can change the order in which results are returned. This orders the entire result set, not just the current page. |
sort_order | desc | Change the direction of the result set |
facets | nil | You can refine the result set by specifying facet values. See the service search facets section for more information. |
Service search results can be refined using facets. To apply a facet to a search use a URL in the following format:
https://app.scientist.com/api/wares.json?facets[facet_name][]=facet_value
For instance, if you wanted find services where Assay Depot was available as a provider, you would use the URL:
https://app.scientist.com/api/wares.json?facets[available_provider_names][]=Assay+Depot
You may specify multiple facets in a single query. It’s important to note, unlike the query string, facet values must match exactly.
There are numerous facets that can be specified. Below is a table of a few interesting facets. Search results contain lists of all the applicable facet names and values, you should consult these results for a more complete list.
protein_type |
|
Narrow the results to only services listing a specific type of protein. |
species |
|
Narrow the results to only services associated with a certain species. |
available_provider_names |
|
Narrow the results to only services that are offered by a particular vendor. |
This will return:
{
"total": 8551,
"page": 1,
"per_page": 25,
"query_time": 0.31529539400000001,
"facets": {
"source": {
"External": 8551
},
"ware_type": {
"Product": 3914,
"CustomService": 3427,
...
},
"available_provider_names": {
"Acme Bioscience": 4475,
...
},
"certifications": {},
"countries": {
"United States": 418,
"Canada": 14,
"India": 8,
"Netherlands": 6,
...
},
...
},
"ware_refs": [
{
"id": "1207da8eb6d0af5eb153c5146f4a6823",
"slug": "90-d-subchronic-tox-study-mouse7",
"name": "90-d Subchronic Tox Study - Mouse",
"price": 0.0,
"average_rating": null,
"type": "Service",
"turn_around_time": null,
"snippet": "90-day subchronic tox study in 100 mice evaluates dose-effect, organ selectivity and NOAEL (GLP)",
"providers": [
{
"id": "1e1456e7d7c23095983ab90efaa6841f",
"name": "MDS-USA"
},
{
"id": "271e3e476c2613cc571c2f418e249bd7",
"name": "Acme Bioscience"
},
...
],
"score": null,
"urls": {
"storefront": "https://staging.scientist.com/service/90-d-subchronic-tox-study-mouse7",
"backoffice": "https://backoffice-staging.scientist.com/wares/90-d-subchronic-tox-study-mouse7/edit"
}
},
{
"id": "1240501c6efc3efb0a5b820331a70597",
"slug": "target-based-library-design",
"name": "Library Design",
"price": 0.0,
"average_rating": null,
"type": "CustomService",
"turn_around_time": null,
"snippet": "Click here to request a quote to design a focused library for lead optimization",
"providers": [
{
"id": "59ee7223992aecf96f1e155b75619e94",
"name": "Sapient Discovery"
},
{
"id": "26cf7be3d1f5920aca36064db26f8920",
"name": "SimBioSys"
},
...
],
"score": null,
"urls": {
"storefront": "https://staging.scientist.com/service/target-based-library-design",
"backoffice": "https://backoffice-staging.scientist.com/wares/target-based-library-design/edit"
}
},
...
]
}
Get queries take the form:
https://app.scientist.com/api/wares/[ware_id].json
This will return:
{
"query_time":0.005992268,
"ware":{
"id":"36aa2c0aa802cd048206c619a9689918",
"slug":"antibody-services",
"name":"Antibody Services",
"price":0.0,
"turn_around_time": {
"max":0,
"min":0,
"display_units":"hours"
},
"type":"CustomService",
"snippet":"Request information or a price quote for Antibody Services",
"description":
"<img src=\"https://backoffice.scientist.com/files/depot-wares/36aa2c0aa802cd048206c619a9689918/antibody-services2.png\" alt=\"Antibody Services Image\" style=\"margin-right: 10px; width: 90px; float: left;\" />\r\n\r\n\r\np<>. If you'd like to narrow down the type of service or product you are looking for,
choose from one of our Antibody Subcategories below. If you're unsure what you need,
...
",
"contact_emails":[],
"responsible_emails":[],
"permission":"read",
"first_published_at":null,
"protein_type":null,
"clonality":null,
"cell_source":null,
"species":[],
"tissue":null,
"amount":null,
"protein_tag":null,
"antigen_species":null,
"product_applications":[],
"ig_type":null,
"purification_method":null,
"peptide_type":null,
"cas_number":null,
"unspsc":"",
"supplier_part_id":"",
"created_at":"2009-10-07T00:26:00+00:00",
"updated_at":"2012-07-13T15:33:57Z",
"urls": {
"storefront":"https://app.scientist.com/service/antibody-services",
"backoffice":"https://backoffice.scientist.com/wares/antibody-services/edit"
}
}
}
Any number of options can be combined in a single query. For instance, the following (contrived) example, lists the first page of services that match the string “fluid” and are associated with the species Human. It also sets the page size to 2 and the authentication token to 1234567890.
curl --header "Authorization: Bearer 123456" https://app.scientist.com/api/wares.json?q=fluid&facets[species][]=Human&page=1&per_page=2