Elsevier Engineering Village API

Engineering Village APIs provide programmatic access to engineering research literature, indexed publications, and engineering-focused content across multiple databases.

Operations 2

GET /ev/results Engineering Village Search API #
GET /ev/records Engineering Village Retrieval API #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/elsevier-engineering-village-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

elsevier-engineering-village-swagger.json Raw ↑
{
 "swagger": "2.0",
 "info": {
  "version": "2.0",
  "title": "Elsevier Engineering Village APIs"
 },
 "tags": [
  {
   "name": "Engineering_Village_Search",
   "description": "Engineering Village Search API"
  },
  {
   "name": "Engineering_Village_Retrieval",
   "description": "Engineering Village Retrieval API"
  }
 ],
 "host": "api.elsevier.com",
 "basePath": "/content",
 "schemes": [
  "https",
  "http"
 ],
 "consumes": [
  "application/json"
 ],
 "produces": [
  "application/json",
  "application/xml"
 ],
 "paths": {
  "/ev/results": {
   "get": {
    "tags": [
     "Engineering_Village_Search"
    ],
    "summary": "Engineering Village Search API",
    "description": "This represents an Expert Search against Engineering Village databases. Expert Search provides search power and flexibility by incorporating advanced Boolean logic and including a rich variety of options.",
    "operationId": "expertSearchUsingGET",
    "consumes": [
     "application/json"
    ],
    "produces": [
     "application/json",
     "application/xml"
    ],
    "parameters": [
     {
      "name": "apiKey",
      "in": "query",
      "description": "Required if no X-ELS-APIKey HTTP header, this represents a unique application developer key providing access to resource.",
      "default": "7f59af901d2d86f78a1fd60c1bf9426a",
      "required": true,
      "type": "string"
     },
     {
      "name": "query",
      "in": "query",
      "description": "Expert search phrase. See help topics <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Expert_search_overview.htm'>here</a> for searching specific <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Expert_Search_Fields_and_Fields_Codes.htm'>fields</a>, and for using <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Proximity_Near_Operator_.htm'>proximity/near operators</a>, <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Boolean_Operators.htm'>Boolean operators</a>, <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Exact_Phrase_Searching.htm'>exact phrases</a>, <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Special_Characters.htm'>special characters</a>, <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Wildcards_and_Truncation.htm'>wildcards and truncation</a>, and <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Stop_Words.htm'>stop words</a>",
      "required": true,
      "type": "string"
     },
     {
      "name": "database",
      "in": "query",
      "description": "<br/>List of databases to query. When no databases are specified, all databases to which application account is entitles are searched. Database codes include:<br/><br/>c - Compendex/EI Backfile<br/>i - Inspec/Inspec Archive<br/>n - NTIS<br/>pc - Paperchem<br/>cm - Chimica<br/>cb - CBNB<br/>el - EnCompassLIT<br/>ep - EnCompassPAT<br/>g - GEOBASE<br/>f - GeoRef<br/>u - US Patents<br/>e - EP Patents",
      "required": false,
      "type": "array",
      "items": {
       "type": "string"
      },
      "collectionFormat": "multi",
      "enum": [
       "c",
       "i",
       "n",
       "pc",
       "cm",
       "cb",
       "el",
       "ep",
       "g",
       "f",
       "u",
       "e",
       "w"
      ]
     },
     {
      "name": "navigator",
      "in": "query",
      "description": "Navigator, a setting which determines if navigators should be returned if a is performed on search words, defaults to false if not set",
      "required": false,
      "type": "boolean"
     },
     {
      "name": "navigatorDataCount",
      "in": "query",
      "description": "Navigator data count, a setting which determines how many records for the navigator should be returned, minimum is 1 maximum is 160, default is 10",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "autoStemming",
      "in": "query",
      "description": "<a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Autostemming.htm'>Autostemming</a> a setting which determines if stemming is performed on search words, defaults to false if not set",
      "required": false,
      "type": "boolean"
     },
     {
      "name": "startYear",
      "in": "query",
      "description": "Start year, leave blank if providing updateNumber",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "endYear",
      "in": "query",
      "description": "End year, leave blank if providing updateNumber",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "updateNumber",
      "in": "query",
      "description": "Update week number, find records updated within the last N weeks; 1 &lt;= N &lt;=4, leave blank when setting startYear or endYear. See <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Date_Limits.htm'>here</a> for more information.",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "sortField",
      "in": "query",
      "description": "Sort Field, which can vary by database. Default setting is relevance if parameter is not provided. See <a href='http://help.engineeringvillage.com/Engineering_Village_Help_CSH.htm#Sort_by.htm'>here</a> for more information.<br/><br/>relevance - Relevance<br/>yr - Date (year)<br/>ausort - Author<br/>stsort - Source<br/>pnsort - Publisher<br/>pcb - Patent cited by",
      "required": false,
      "type": "string",
      "default": "relevance",
      "enum": [
       "relevance",
       "yr",
       "ausort",
       "stsource",
       "pnsort",
       "pcb"
      ]
     },
     {
      "name": "sortDirection",
      "in": "query",
      "description": "Sort direction. Default setting is \"dw\" if parameter is not provided",
      "required": false,
      "type": "string",
      "enum": [
       "dw",
       "up"
      ]
     },
     {
      "name": "offset",
      "in": "query",
      "description": "Page offset, used for pagination. To get page N, set offset = (N-1) * Page size. Defaults to 0 if not set.",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "pageSize",
      "in": "query",
      "description": "Requested page size, defaults to 25 if not set. Used for pagination with offset parameter. Actual page size will be set to the results count if the results count is less than the requested page size",
      "required": false,
      "type": "integer",
      "format": "int32"
     },
     {
      "name": "insttoken",
      "in": "query",
      "description": "Specification for authorization, institution authtoken",
      "required": false,
      "type": "string"
     },
     {
      "name": "access_token",
      "in": "query",
      "description": "Override for HTTP header Authorization, this contains the OAuth bearer access token, where the format of the field is \"&lt;token&gt;\" (where the token represents the end-user session key). The presence of a bearer token implies the request will be executed against user-based entitlements.",
      "required": false,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "Engineering Village Search Response",
      "schema": {
       "$ref": "#/definitions/PageContainer"
      }
     },
     "400": {
      "description": "Invalid Request: This is an error that occurs when invalid information is submitted.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "401": {
      "description": "Authentication Error: This is an error that occurs when a user cannot be authenticated due to missing/invalid credentials (authtoken or APIKey).",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "500": {
      "description": "Generic Error: This is a general purpose error condition, typically due to back-end processing errors.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "403": {
      "description": "Authorization/Entitlements Error: This is an error that occurs when a user cannot be authenticated or entitlements cannot be validated.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "429": {
      "description": "Quota Exceeded: This is an error that occurs when a requester has exceeded the quota limits associated with their API Key.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     }
    }
   }
  },
  "/ev/records": {
   "get": {
    "tags": [
     "Engineering_Village_Retrieval"
    ],
    "summary": "Engineering Village Retrieval API",
    "description": "This represents arecord retrieval from the Engineering Village databases.",
    "operationId": "fetchRecordUsingGET",
    "consumes": [
     "application/json"
    ],
    "produces": [
     "application/json",
     "application/xml"
    ],
    "parameters": [
     {
      "name": "apiKey",
      "in": "query",
      "description": "Required if no X-ELS-APIKey HTTP header, this represents a unique application developer key providing access to resource.",
      "default": "7f59af901d2d86f78a1fd60c1bf9426a",
      "required": true,
      "type": "string"
     },
     {
      "name": "docId",
      "in": "query",
      "description": "DocId values corresponding to record to retreieve. The docId values are found in the DOC/DOC-ID values of the results returned by the Engineering Village Search API.",
      "required": true,
      "type": "array",
      "items": {
       "type": "string"
      },
      "collectionFormat": "multi"
     },
     {
      "name": "insttoken",
      "in": "query",
      "description": "Specification for authorization, institution authtoken",
      "required": false,
      "type": "string"
     },
     {
      "name": "access_token",
      "in": "query",
      "description": "Override for HTTP header Authorization, this contains the OAuth bearer access token, where the format of the field is \"&lt;token&gt;\" (where the token represents the end-user session key). The presence of a bearer token implies the request will be executed against user-based entitlements.",
      "required": false,
      "type": "string"
     }
    ],
    "responses": {
     "200": {
      "description": "Engineering Village Retrieval Response",
      "schema": {
       "$ref": "#/definitions/PageContainer"
      }
     },
     "400": {
      "description": "Invalid Request: This is an error that occurs when invalid information is submitted.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "401": {
      "description": "Authentication Error: This is an error that occurs when a user cannot be authenticated due to missing/invalid credentials (authtoken or APIKey).",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "500": {
      "description": "Generic Error: This is a general purpose error condition, typically due to back-end processing errors.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "403": {
      "description": "Authorization/Entitlements Error: This is an error that occurs when a user cannot be authenticated or entitlements cannot be validated.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     },
     "429": {
      "description": "Quota Exceeded: This is an error that occurs when a requester has exceeded the quota limits associated with their API Key.",
      "schema": {
       "$ref": "#/definitions/ServiceErrorWrap"
      }
     }
    }
   }
  }
 },
 "definitions": {
  "PageContainer": {
   "properties": {
    "PAGE": {
     "$ref": "#/definitions/PageContainerItems"
    }
   }
  },
  "Status": {
   "properties": {
    "statusCode": {
     "type": "string"
    },
    "statusText": {
     "type": "string"
    }
   }
  },
  "DocID": {
   "properties": {
    "DB": {
     "$ref": "#/definitions/Database"
    },
    "DOC-ID": {
     "type": "string"
    },
    "HITINDEX": {
     "type": "integer",
     "format": "int32"
    },
    "TAGDATE": {
     "type": "string"
    }
   }
  },
  "ServiceError": {
   "properties": {
    "status": {
     "$ref": "#/definitions/Status"
    }
   }
  },
  "PageContainerItems": {
   "properties": {
    "PAGE-RESULTS": {
     "$ref": "#/definitions/PageResults"
    },
    "RESULTS-COUNT": {
     "type": "integer",
     "format": "int32"
    },
    "RESULTS-PER-PAGE": {
     "type": "integer",
     "format": "int32"
    }
   }
  },
  "PageResults": {
   "properties": {
    "PAGE-ENTRY": {
     "type": "array",
     "items": {
      "$ref": "#/definitions/PageEntry"
     }
    }
   }
  },
  "FT": {
   "properties": {
    "FTLINK": {
     "type": "string"
    }
   }
  },
  "DocProperties": {
   "properties": {
    "any": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    }
   }
  },
  "Afs": {
   "properties": {
    "AF": {
     "type": "array",
     "description": "Authors affiliation list",
     "items": {
      "$ref": "#/definitions/Affiliation"
     }
    }
   }
  },
  "CitationEiDoc": {
   "properties": {
    "AFS": {
     "description": "Authors affiliation",
     "$ref": "#/definitions/Afs"
    },
    "AUS": {
     "description": "Authors",
     "$ref": "#/definitions/Aus"
    },
    "DOC": {
     "$ref": "#/definitions/DocID"
    },
    "DOCUMENTPROPERTIES": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    },
    "EDS": {
     "description": "Editors",
     "$ref": "#/definitions/Eds"
    },
    "EFS": {
     "description": "Editors affiliation",
     "$ref": "#/definitions/Efs"
    },
    "FT": {
     "$ref": "#/definitions/FT"
    },
    "VIEW": {
     "type": "string"
    },
    "docProperties": {
     "$ref": "#/definitions/DocProperties"
    }
   }
  },
  "PageEntry": {
   "properties": {
    "EI-DOCUMENT": {
     "$ref": "#/definitions/CitationEiDoc"
    }
   }
  },
  "Efs": {
   "properties": {
    "EF": {
     "type": "array",
     "description": "Editors affiliation list",
     "items": {
      "$ref": "#/definitions/Affiliation"
     }
    }
   }
  },
  "ContributorInfo": {
   "properties": {
    "AFS": {
     "description": "Affiliations",
     "$ref": "#/definitions/ContributorAffiliation"
    },
    "CO": {
     "type": "string",
     "description": "Country"
    },
    "EMAIL": {
     "type": "string"
    },
    "ID": {
     "type": "string"
    },
    "NAME": {
     "type": "string"
    }
   }
  },
  "Eds": {
   "properties": {
    "ED": {
     "type": "array",
     "description": "Editor list",
     "items": {
      "$ref": "#/definitions/ContributorInfo"
     }
    }
   }
  },
  "Database": {
   "properties": {
    "DBNAME": {
     "type": "string"
    },
    "ID": {
     "type": "string"
    }
   }
  },
  "ServiceErrorWrap": {
   "properties": {
    "service-error": {
     "$ref": "#/definitions/ServiceError"
    }
   }
  },
  "Aus": {
   "properties": {
    "AU": {
     "type": "array",
     "description": "Author list",
     "items": {
      "$ref": "#/definitions/ContributorInfo"
     }
    }
   }
  },
  "ContributorAffiliation": {
   "properties": {
    "AFID": {
     "type": "array",
     "description": "Affiliation ID list",
     "items": {
      "type": "string"
     }
    }
   }
  },
  "Affiliation": {
   "properties": {
    "ID": {
     "type": "string"
    },
    "NAME": {
     "type": "string"
    }
   }
  }
 },
 "x-apievangelist-provenance": {
  "method": "searched",
  "source": "https://dev.elsevier.com/elsdoc/engineeringvillage",
  "note": "Verbatim copy is openapi/_original/elsdoc/elsevier-engineering-village-swagger.json. This copy differs from the source in exactly two mechanical ways: Elsevier's external path $refs (./listings/<Name>#/<op>) were inlined from the provider's own listing documents (also saved verbatim under openapi/_original/elsdoc/listings/), and info.title was filled in where the provider left it empty. No operation, parameter, response or schema content was authored by API Evangelist.",
  "retrieved": "2026-09-06"
 }
}