Open Archive Initiative (OAI)
The Open Archives Initiative Protocol for Metadata Harvesting (OAI-PMH) standard exposes the metadata records in your catalog in an XML format defined by version 2.0 of the OAI-PMH protocol.
Configuration
The following URL is the standard end point for the catalog (substitute your GeoNetwork URL): http://localhost:8080/geonetwork/srv/api/oaipmh?
Requests
Standard OAI-PMH requests can be done using the url above and the 6 verbs provided by the standard:
- Identify
- ListMetadataFormats
- ListSets
- ListRecords
- ListIdentifiers
- GetRecord
Identify operation
This verb is used to retrieve information about a repository.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=Identify
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2025-06-03T13:03:08.054227ZZ</responseDate>
<request verb="Identify">http://localhost:8080/geonetwork/srv/api/oaipmh</request>
<Identify>
<repositoryName>My GeoNetwork catalogue</repositoryName>
<baseURL>http://localhost:8080/geonetwork/srv/api/oaipmh</baseURL>
<protocolVersion>2.0</protocolVersion>
<adminEmail>root@localhost</adminEmail>
<earliestDatestamp>2005-03-31T17:13:30ZZ</earliestDatestamp>
<deletedRecord>no</deletedRecord>
<granularity>YYYY-MM-DDThh:mm:ssZ</granularity>
</Identify>
</OAI-PMH>
ListMetadataFormats operation
This verb is used to retrieve the metadata formats available from a repository.
In the catalogue, this corresponds to the schema plugins that are installed.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListMetadataFormats
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2025-06-04T06:12:54.543994ZZ</responseDate>
<request verb="ListMetadataFormats">http://localhost:8080/geonetwork/srv/api/oaipmh</request>
<ListMetadataFormats>
<metadataFormat>
<metadataPrefix>iso19115-3.2018</metadataPrefix>
<schema>https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd</schema>
<metadataNamespace>http://standards.iso.org/iso/19115/-3/mdb/2.0</metadataNamespace>
</metadataFormat>
<metadataFormat>
<metadataPrefix>iso19139</metadataPrefix>
<schema>http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd</schema>
<metadataNamespace>http://www.isotc211.org/2005/gmd</metadataNamespace>
</metadataFormat>
<metadataFormat>
<metadataPrefix>dublin-core</metadataPrefix>
<schema>http://localhost:8080/geonetwork/xml/schemas/dublin-core/schema.xsd</schema>
<metadataNamespace />
</metadataFormat>
<metadataFormat>
<metadataPrefix>iso19110</metadataPrefix>
<schema>http://www.isotc211.org/2005/gfc/gfc.xsd</schema>
<metadataNamespace>http://www.isotc211.org/2005/gfc</metadataNamespace>
</metadataFormat>
<metadataFormat>
<metadataPrefix>oai_dc</metadataPrefix>
<schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
<metadataNamespace>http://www.openarchives.org/OAI/2.0/</metadataNamespace>
</metadataFormat>
</ListMetadataFormats>
</OAI-PMH>
ListSets operation
This verb is used to retrieve the set structure of a repository, useful for selective harvesting.
In the catalogue, this corresponds to the categories.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListSets
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2025-06-04T06:13:43.916077ZZ</responseDate>
<request verb="ListSets">http://localhost:8080/geonetwork/srv/api/oaipmh</request>
<ListSets>
<set>
<setSpec>maps</setSpec>
<setName>Cartes & graphiques</setName>
</set>
<set>
<setSpec>datasets</setSpec>
<setName>Jeux de données</setName>
</set>
...
ListRecords operation
This verb is used to harvest records from a repository.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListRecords&metadataPrefix=oai_dc http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListRecords&metadataPrefix=iso19139 http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListRecords&metadataPrefix=datacite
metadataPrefix
is the metadata format to be returned, it can be a schema plugin identifier such as iso19139
, iso19115-3.2018
, ...
or a conversion defined in each schema plugin formatter
folder (eg. oai_dc
).
If the conversion is not available, the response will skip the record and continue with the next one.
<?xml version="1.0" encoding="UTF-8"?>
<OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd">
<responseDate>2025-06-04T07:03:18.211967ZZ</responseDate>
<request identifier="da165110-88fd-11da-a88f-000d939bc5d8" metadataPrefix="oai_dc" verb="GetRecord">http://localhost:8080/geonetwork/srv/api/oaipmh</request>
<GetRecord>
<record>
<header>
<identifier>da165110-88fd-11da-a88f-000d939bc5d8</identifier>
<datestamp>2007-11-06T11:13:00ZZ</datestamp>
<setSpec>maps</setSpec>
<setSpec>datasets</setSpec>
<setSpec>interactiveResources</setSpec>
</header>
<metadata>
<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
<dc:identifier>da165110-88fd-11da-a88f-000d939bc5d8</dc:identifier>
<dc:date>2007-11-06T11:13:00Z</dc:date>
<dc:title>Hydrological Basins in Africa (Sample record, please remove!)</dc:title>
<dc:subject>watersheds</dc:subject>
<dc:subject>river basins</dc:subject>
...
The maximum number of records in the response is limited by the setting system/oai/maxrecords
.
To paginate over records use the resumptionToken
parameter in the request. The response will include a resumptionToken
element if there are more records to retrieve.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListRecords&metadataPrefix=oai_dc&resumptionToken=/-/oai_dc/-//-//-/7ucugfvmh534od2bzcz267oay/-/1
ListIdentifiers operation
This verb is an abbreviated form of ListRecords, retrieving only headers rather than records.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=ListIdentifiers&metadataPrefix=iso19139
GetRecord operation
This verb is used to retrieve an individual metadata record from a repository.
http://localhost:8080/geonetwork/srv/api/oaipmh?verb=GetRecord&identifier=da165110-88fd-11da-a88f-000d939bc5d8&metadataPrefix=iso19139
Reference
Please see https://www.openarchives.org/OAI/openarchivesprotocol.html for further details.