OAI-PMH Setup & Troubleshooting for OJS: Complete Guide
On this page
OAI-PMH (Open Archives Initiative Protocol for Metadata Harvesting) enables your journal's metadata to be discovered and aggregated by search engines, repositories, and discovery services worldwide. Properly configured OAI-PMH is essential for visibility in Google Scholar, BASE, OpenAIRE, CORE, and institutional repositories. This guide covers OAI-PMH fundamentals, OJS configuration, and troubleshooting common issues.
Understanding OAI-PMH
OAI-PMH is a protocol that allows metadata harvesters to retrieve structured information about your published articles. When services like Google Scholar, BASE, or CORE "harvest" your journal, they're using OAI-PMH to systematically collect metadata about your articlesβtitles, authors, abstracts, keywords, publication dates, and URLs.
How Harvesting Works
- Harvester requests: A service sends an OAI-PMH request to your journal's endpoint
- OJS responds: Returns XML-formatted metadata for requested articles
- Harvester processes: Service indexes metadata into their discovery system
- Incremental updates: Subsequent requests fetch only new or modified records
Your OAI-PMH Endpoint
Every OJS installation has an OAI-PMH endpoint at:
https://yourjournal.com/index.php/journalpath/oaiFor multi-journal installations, each journal has its own endpoint. The site-wide endpoint aggregates all journals:
https://yourjournal.com/index/oaiTesting Your OAI-PMH Endpoint
Before registering with harvesters, verify your endpoint works correctly:
Basic Identity Check
Add ?verb=Identify to your OAI-PMH URL:
https://yourjournal.com/index.php/journalpath/oai?verb=IdentifyThis should return XML containing your journal's name, base URL, admin email, and earliest datestamp.
List Available Metadata Formats
https://yourjournal.com/index.php/journalpath/oai?verb=ListMetadataFormatsOJS supports multiple formats:
oai_dc- Dublin Core (basic, widely supported)nlm- NLM JATS (rich scholarly metadata)marc- MARC format (library systems)marcxml- MARC in XML
List Records
https://yourjournal.com/index.php/journalpath/oai?verb=ListRecords&metadataPrefix=oai_dcThis retrieves actual metadata records. If no records appear but your journal has published content, there's a configuration problem.
π Need OAI-PMH Configured Correctly?
Proper OAI-PMH configuration ensures your articles appear in Google Scholar and other discovery services. We configure metadata harvesting for optimal discoverability.
OJS OAI-PMH Configuration
Enable OAI-PMH
In OJS 3.x, OAI-PMH is enabled by default. Verify in config.inc.php:
[oai]
; Enable OAI
oai = On
; OAI Repository identifier
repository_id = ojs.yourjournal.comConfigure Journal Metadata
Complete metadata improves harvesting quality. In Settings β Journal β Masthead:
- Journal title (accurate and consistent)
- ISSN (both print and online if applicable)
- Publisher name
- Journal description/about text
Article Metadata Requirements
Each article should have complete metadata:
- Title (in publication language)
- Authors with affiliations
- Abstract
- Keywords
- Publication date
- DOI (if registered)
- PDF galley assigned
Troubleshooting OAI-PMH Issues
Problem: No Records Returned
Symptoms: ListRecords returns empty or "noRecordsMatch" error.
Causes & Solutions:
- No published articles: OAI-PMH only exposes published content in published issues
- Missing galleys: Articles need galleys assigned to appear
- Unpublished issues: Verify issues are marked as published (not just scheduled)
- Database issues: Rebuild the article search index in Administration
Problem: 404 or Error on OAI Endpoint
Symptoms: OAI URL returns 404 Not Found or server error.
Causes & Solutions:
- Wrong URL path: Verify journal path matches exactly (case-sensitive)
- mod_rewrite issues: Check .htaccess is properly configured for OJS
- OAI disabled: Verify
oai = Onin config.inc.php - Plugin conflicts: Disable recently added plugins to test
Problem: Harvesters Report Errors
Symptoms: Google Scholar or other services report harvesting failures.
Causes & Solutions:
- Timeout issues: Large journals may timeout; ensure adequate PHP timeout settings
- Memory limits: Increase PHP memory_limit if harvesting fails mid-process
- Invalid XML: Special characters in metadata may break XML; clean problematic records
- SSL issues: Ensure valid SSL certificate; some harvesters reject invalid SSL
Problem: Incomplete Metadata
Symptoms: Records appear but missing titles, authors, or abstracts.
Causes & Solutions:
- Metadata not entered: Review article submission metadata in OJS
- Encoding issues: Non-UTF8 characters may be stripped
- Language settings: Metadata in non-default language may not export
OAI-PMH Sets
OAI-PMH "sets" allow harvesters to request specific subsets of your content:
?verb=ListRecords&metadataPrefix=oai_dc&set=journal:journalpathOJS automatically creates sets for:
- Each journal in multi-journal installations
- Each section within journals (if configured)
View available sets:
?verb=ListSetsRegistering with Harvesters
Google Scholar
Google Scholar automatically discovers OJS journals but you can expedite indexing:
- Submit your OAI-PMH URL via Google Search Console
- Ensure metatags plugin is enabled in OJS
- Verify PDF galleys are accessible
BASE (Bielefeld Academic Search Engine)
- Visit the BASE content provider suggestion form
- Submit your OAI-PMH endpoint URL
- BASE validates and begins harvesting if accepted
OpenAIRE
- Register at OpenAIRE's repository registration
- Provide OAI-PMH endpoint and journal details
- May require OpenAIRE-compliant metadata (install OpenAIRE plugin)
CORE
- Register as a data provider at CORE
- Submit OAI-PMH endpoint
- CORE harvests full-text when accessible
Enhancing OAI-PMH Output
Install Additional Metadata Plugins
OJS plugins can enhance OAI-PMH output:
- Dublin Core Plugin: Standard OJS plugin for basic metadata
- OpenAIRE Plugin: Adds OpenAIRE-compliant metadata format
- JATS Plugin: Provides JATS XML metadata export
- Google Scholar Plugin: Enhances metatags for Google Scholar
Resumption Tokens
For large journals, OAI-PMH uses resumption tokens to paginate results. If harvesters report incomplete harvesting:
- Ensure PHP sessions work correctly
- Check session save path is writable
- Verify no firewall blocks long-running connections
π OAI-PMH Configuration Checklist
- OAI-PMH enabled in config.inc.php
- Repository ID configured
- Identify verb returns valid response
- ListRecords returns published articles
- All articles have galleys assigned
- Journal ISSN configured
- Article metadata complete (title, authors, abstract)
- DOIs included in metadata (if using Crossref)
- SSL certificate valid
- Registered with Google Scholar
- Registered with BASE (optional)
- Registered with OpenAIRE (optional)
Monitoring Harvesting
Periodically verify your content is being harvested:
- Google Scholar: Search
site:yourjournal.comin Google Scholar - BASE: Search your journal name in BASE and verify article count
- OAI-PMH logs: Some harvesting services provide dashboard statistics
If article counts seem low, review OAI-PMH configuration and re-test the endpoint.
Need OAI-PMH Configuration Help?
Altechmind Technologies configures OAI-PMH for optimal metadata harvesting. We ensure your journal appears in Google Scholar, BASE, OpenAIRE, and other discovery services correctly.
Our OAI-PMH services include:
- Endpoint configuration and testing
- Metadata optimization
- Harvester registration
- Troubleshooting harvesting issues
- OpenAIRE compliance setup
Last updated on December 29, 2025
Related articles
- Plagiarism Detection for Academic Journals: Tools, Setup & Best Practices Journal Publishing 5 min read
- Digital Preservation for Journals: Complete Guide to LOCKSS, PKP PN, Portico & More Journal Publishing 9 min read
- Understanding Impact Factor: What It Is and What It Isn’t Journal Publishing 6 min read