Provider Capabilities
Each adapter implements the unified ScholarlyDataSource
interface while handling provider-specific features and limitations.
Supported Providers
Provider | Works Search | Author Search | Citations | References | Batch APIs | Rate Limits |
---|---|---|---|---|---|---|
OpenAlex | ✅ Cursor | ✅ Cursor | ✅ | ✅ | ✅ 50/req | Polite† |
Semantic Scholar | ✅ Offset | ✅ Offset | ✅ | ✅ | ✅ 500/req | 100/min* |
Crossref | ✅ Cursor | ❌ | ⚠️ Limited | ✅ | ❌ | Polite† |
† Polite usage encouraged with mailto
parameter
- API key required for higher limits
Quick Provider Selection
Choose OpenAlex for:
- Comprehensive academic coverage (100M+ works)
- Rich metadata and citation networks
- Open access status and venue information
- No API key required
Choose Semantic Scholar for:
- AI/ML/Computer Science focus
- High-quality author disambiguation
- Advanced search capabilities
- Bulk data processing (500 IDs per batch)
Choose Crossref for:
- DOI-based workflows
- Publisher metadata and licensing
- Journal-specific searches
- Reliable bibliographic data
Common Behaviors
All adapters share these standardized features:
- Query Interface: Unified filters for search, pagination, and field selection
- Reliable HTTP: Automatic retries with jittered backoff and
Retry-After
compliance - Data Normalization: Consistent field mapping across providers
- Graph Compatibility: Direct integration with
GraphExporter
for network analysis - Caching Support: PSR-6/PSR-16 compatible request-level caching
- Error Handling: Typed exceptions for different failure modes
Configuration Examples
Environment Variables (Laravel)
# Provider credentials
OPENALEX_MAILTO=researcher@university.edu
S2_API_KEY=your-semantic-scholar-key
CROSSREF_MAILTO=researcher@university.edu
# Global settings
SCHOLARLY_DEFAULT_ADAPTER=openalex
SCHOLARLY_HTTP_TIMEOUT=30
SCHOLARLY_CACHE_STORE=redis
Direct Configuration
$factory = AdapterFactory::make([
'default' => 'openalex',
'cache' => new ArrayAdapter(),
'openalex' => ['mailto' => 'you@example.com'],
's2' => ['api_key' => 'your-key'],
'crossref' => ['mailto' => 'you@example.com']
]);
For detailed provider setup and capabilities, see the individual adapter guides:
Related Documentation
Core Concepts: Contracts | Architecture | Getting Started |
Features: Graph Analytics | Laravel Integration | Provider Adapters |
Development: Extending | GitHub Repository |
External Resources: OpenAlex API | Semantic Scholar API | Crossref API |