Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH)

Please note that ICPSR's current implementation of OAI-PMH only provides Dublin Core metadata, and only for study objects. If you would like ICPSR to provide additional formats/objects or if you find a problem with our OAI-PMH service, please contact us at

Starting URL:

For more information on OAI-PMH, please visit the The OAI-PMH website.

How to use OAI-PMH at ICPSR

OAI-PMH is basically a base URL with 1-3 variables tacked onto the end of the URL. The three variables are:

  • metadataPrefix (format)
  • verb
  • identifier

So a URL to retrieve the metadata record for ICPSR 6849 in Dublin Core format would look like this:

For the non-techies, variables are added to the end of a URL after a question mark. Individual variables are constructed as fieldname=value and are separated with ampersands.


The metadataPrefix variable spells out the format of the output. For example, you might choose to obtain MARC output, or DDI XML, or Dublin Core. At present, ICPSR only supports Dublin Core, so the only acceptable value is metadataPrefix=oai_dc.


The verb variable spells out what kind of result you want to obtain; not all OAI-PMH verbs are useful for our particular implementation of OAI-PMH. The useful verbs are:

  • ListRecords - Retrieves 50 records at a time. ICPSR has over 9000 studies, so we use something called a resumptionToken, which will enable scripts to retrieve the entire collection in 50-record increments.
  • GetRecord - Return an individual metadata record; requires an identifier

In addition, there are other OAI-PMH verbs that we don't fully utilize:

  • Identify - This just provides a little information on the OAI-PMH service and repository.
  • ListSets - Not used by ICPSR.
  • ListIdentifiers - This returns a list of ICPSR identifiers (and the release date for each). Since ICPSR identifiers are just the study numbers, this isn't terribly useful.
  • ListMetadataFormats - Lists the available metadata formats for a given record; requires an identifier. As ICPSR currently only supports Dublin Core, this is mostly useless.


The identifier variable enables you to spell out which object you wish to retrieve, in this case a study. ICPSR identifiers are just the study number. You can use either the 5-digit study number, or the study number without padding. I.e., both 6849 and 06849 will work.

Found a problem? Use our Report Problem form to let us know.