Skip to content

Provider compatibility

This hand-maintained matrix records observed provider routes, not a promise that every title, institution, entitlement, or browser session will work. A row marked Verified working records an individually live-verified observation; it is not a success rate. We do not invent aggregate rates or denominators: where there is no measured population, none is implied. Unknown or changed provider UI remains assisted behavior.

The registered adapter list is intentionally narrower than the web. A provider appears here only when there is a useful observed route to report; the extension runs an adapter only after the user has granted its provider host permission.

Every adapter below ships with a captured fixture under extension/fixtures/<adapter-id>/ (see Contribute a provider adapter). A test (extension/test/adapters.test.ts) walks the registered adapter list and fails if any classify rule — article, login, terms, no_entitlement, or wrong_work_check — lacks its matching captured fixture (success.html for article, login-return.html for login, terms.html for terms, no-entitlement.html for no_entitlement, wrong-work.html for wrong_work_check), so this table cannot silently drift ahead of the evidence backing it.

Status values: Verified working — an individually confirmed end-to-end download. Verified route — the page structure and file endpoint are confirmed against a real entitled or public session, without an independent confirmation that the endpoint itself returns file bytes. Human-assisted — a publisher terms step keeps the download manual unless auto-accept consent is recorded. Unverified — registered and fixture-backed, but no retained validated artifact has established an end-to-end download; live page captures, viewer adoption, or provider outcomes alone do not promote it. No route — the adapter recognizes a terminal provider state but has no download control to invoke.

Provider Route observed Adapter Status Last verified Notes
ACM Digital Library PDF/eReader toolbar control (a.btn--eReader) gates a derived /doi/pdf/<doi>?download=true endpoint acm Verified working 2026-07-23 The bottom-of-page a#downloadPdfUrl anchor is not an entitlement signal — ACM renders it even on paywalled "Get Access" pages — so the adapter keys on the eReader control instead; the downloads API was confirmed returning %PDF bytes through the session cookie jar.
Annual Reviews Open-access "Download PDF" control inside a JS-backed POST form; the control has no href, so it is clicked directly annualreviews Verified route 2026-07-20 Verified against a public open-access article. A click adapter — see Browser limitation below.
APA PsycNet Stable #pdf anchor renders once the full article has loaded; denied records show a "Get Access" control instead psycnet Verified route 2026-07-20 Verified live in a fresh browser against a public full-text article and a denied record; doi.apa.org DOI landings route into the same application.
BMJ Journals citation_access=all plus a rendered article-pdf-download anchor gates the file bmj Verified route 2026-07-20 Restricted to explicit citation_access=all pages — closed articles stay assisted even when they publish PDF-shaped citation metadata.
Cambridge Core Action-bar buttonSavePDFOptions control plus a rendered aop-cambridge-core/content/view anchor cambridge Verified route 2026-07-20 Denied pages still publish citation_pdf_url, so the adapter requires the rendered PDF action instead; scoped to journals, not Cambridge's separate books PDF service.
ClinicalKey Rendered pdf-download-link anchor to /service/content/pdf/watermarked/<pii>.pdf clinicalkey Verified route 2026-08-06 Only clinicalkey.com.au is covered; clinicalkey.com needs its own capture. Uses the largest settle timeout in the registry (15s) after a live resolver hop was observed still rendering a loading shell 10 seconds in.
Cochrane Library Every PDF affordance, including citation_pdf_url, names /pdf/full, a 1.7 KB HTML viewer wrapper; the file is the nested /pdf/CDSR/<code>/<code>.pdf the wrapper's iframe names cochrane Verified route 2026-08-24 Entitlement is the rendered full-review PDF link (a.pdf-link-full), because Cochrane ships its institutional sign-in panel on entitled pages too. The abstract link (a.pdf-link-abstract) names a different document and is never the target.
EBSCOhost The PDF viewer's opid/recordId build a call to EBSCO's researcher-edge-aggregator API, which returns the PDF URL as JSON ebsco Verified route 2026-07-14 Entitlement is inferred from the rendered PDF viewer (a canvas), since the record page's own download button is absent there; the constructed API URL is not independently confirmed to return a file.
Emerald Insight Rendered PDF anchor — the current platform's a.article-pdfLink, or the legacy a.intent_pdf_link — read directly by href emerald Verified route 2026-08-06 Emerald migrated its delivery anchor; both selectors are kept until a current page is confirmed to no longer serve the legacy one. Entitlement is proved by the paywall rule not matching first, not by an Open Access badge.
Ex Libris Alma (View It) No download route — recognizes the resolver's empty-results terminal state so an unresolved holding classifies no_entitlement instead of unknown exlibris-primo No route Not applicable Alma pages with a real holding forward elsewhere and are not evidenced here; those stay assisted.
Ex Libris Primo /discovery/sourceRecord delivery anchor (a.anchor-tag-style) read directly by href; a painted record with scoped record availability but no source anchor classifies no_entitlement primo Verified route 2026-08-03 Covers hosted Primo instances (<inst>.primo.exlibrisgroup.com); a custom-domain discovery front needs its own capture. Ten live captures measured the not-held state on 2026-08-30. The availability wording also appears on held records, so deferUntilDeadline keeps the negative rule out of early classification. At the 15 s deadline, the earlier article rule wins if the source link exists; otherwise nde-record-availability .available-at-button names non-entitlement. A record that never paints that container stays unknown.
HAL (open repository) citation_pdf_url meta on a public repository record, fetched directly hal Verified route 2026-07-20 An open repository — no login required. Records without a deposited file omit the meta tag and stay assisted rather than being misclassified.
Hogrefe eContent Article pages expose citation_journal_title metadata alongside a provider-owned a[href^='/doi/pdf/'] anchor, read directly by href hogrefe Verified route 2026-08-08 Abstract and login shells lack the required article-metadata + PDF-anchor pair and stay assisted rather than being misclassified.
Informit SAML terms-consent form gates a rendered a.pdf-button[href^='/doi/pdf/'] control, clicked directly informit Human-assisted 2026-08-03 Terms consent is auto-accepted only with recorded consent; otherwise the human clicks through the SAML consent form. A click adapter — see Browser limitation below.
JAMA Network Page script checks data-article-url before downloading, so the adapter clicks the #pdf-link control directly (this older JAMA control has no href) jamanetwork Verified route 2026-07-20 Gated on a full-access marker plus a free/open-access class, since sign-in and purchase controls also appear on free pages. A click adapter — see Browser limitation below.
JSTOR mfe-download-pharos-modal terms-consent step gates a derived /stable/pdf/<id>.pdf?acceptTC=1 endpoint jstor Human-assisted 2026-08-03 The viewer's own PDF control opens via window.open, which carries no user gesture and is blocked by Chrome's popup blocker, so the adapter fetches the direct endpoint instead. acceptTC=1 is JSTOR's own terms acceptance, so the fetch runs only with recorded consent.
LWW / Wolters Kluwer Journals wkhealth_pdf_url meta holds the exact PDF URL, fetched directly even when no anchor is rendered lww Verified route 2026-07-20 Requires the rendered full-text container, not just the metas, so abstract/paywall pages with PDF-shaped metadata stay assisted.
MDPI citation_pdf_url meta plus a rendered a.UD_ArticlePDF anchor, read directly by href mdpi Verified route 2026-08-04 Verified against a public, fully open-access MDPI article.
MIT Press Direct Silverchair article-pdfLink anchor read directly by href mitpress Verified route 2026-07-20 Paywalled abstract routes still publish citation_pdf_url; the rendered purchase-wall markers are checked first and take priority over the metadata.
Nature.com access=Yes plus a rendered download-pdf control gates its href nature Verified route 2026-07-20 Nature publishes citation_pdf_url even on paywalled pages, so it is not used as the entitlement signal. Article-in-Press pages can serve _reference.pdf while their citation meta points elsewhere.
Open-access sources Unpaywall and Europe PMC direct sources None No adapter needed Not applicable These sources run before browser handoff.
Oxford Academic (OUP) Silverchair article-pdfLink anchor read directly by href oup Verified route 2026-07-20 Denied pages redirect to article-abstract and render a js-no-access-jumplink control, checked first so a metadata-only paywall page cannot look entitled.
ProQuest OpenURL handler; requires the accountid parameter proquest Verified working 2026-07-18 Appending accountid unlocks the institutional route before the provider's federated-login fallback.
Psychiatry Online Silverchair data-article-access='full' state plus a rendered #downloadPdfUrl anchor, read directly psychiatryonline Verified route 2026-07-20 Denied pages may still render downloadPdfUrl, so the full-access marker is checked first.
SAGE Journals Rendered section.format--pdf_epub panel gates a derived /doi/pdf/<doi>?download=true endpoint sage Verified route 2026-07-27 SAGE stopped rendering the earlier a#downloadPdfUrl anchor in July 2026; the adapter was rewritten to key on the semantic PDF/EPUB panel instead of a viewer-only eReader href.
ScienceDirect Chrome: rendered access-bar View PDF anchor opens the provider viewer; viewer adoption captures its PDF. Firefox: human-assisted, because the route requires a click download sciencedirect Unverified Not live-verified Two layouts, and only one has an access bar. The rule carries one selector per layout, each scoped to a single anchor: .accessbar .ViewPDF > a… for the access-bar pages, and .content-details-actions > .content-actions > a… for an entitled subscription page that has no .accessbar container and no .ViewPDF at all (captured 2026-08-24, pii/S0747563216303168, control enabled, 261 KB fully rendered, read as a changed provider by the access-bar-only rule). Both match the href by path membership, never by a trailing anchor: re-measured live 2026-08-30 on doi 10.1016/j.sbspro.2014.01.1251, the real href is /science/article/pii/<pii>/pdf?md5=<32 hex>&pid=<pii>-main.pdf, and sanitizeFixture strips query strings — so the earlier [href$='/pdf'] matched the sanitized fixture and could never match the live anchor, while /pdfft does not apply to that paper's route at all. Every fixture-backed test passed while the field classified unknown. The container scopes are what keep a recommended sibling unreachable, and both are pinned by a test that fails if either is widened to the anchor class alone. An anchor with no href (the unpainted signature requiresVisible exists for) still cannot match. Classification is live-verified against captures from a real session; the status stays Unverified because no validated artifact has been retained.
SpringerLink Rendered a[data-test='pdf-link'] anchor to /content/pdf/, read directly springer Verified route 2026-07-14 Verified live against both entitled and no-entitlement article states.
Taylor & Francis Online Rendered .downloadPDFLink a.show-pdf anchor to /doi/pdf/, gated on an Open Access or full-access badge tandfonline Verified route 2026-08-06 Journal platform only — distinct from taylorfrancis.com books, whose citation_pdf_url can be a preview only. no_entitlement runs first since Access Denial pages carry no download control at all.
Thieme E-Journals Rendered #pdfLink anchor, read directly, gated on the platform's full-text page state thieme Verified route 2026-07-20 Verified against public full-text pages; the abstract-only route stays unknown/assisted since citation_pdf_url and #pdfLink also appear there.
Wiley Online Library citation_pdf_url is a viewer wrapper; the file is /doi/pdfdirect/<doi>?download=true wiley Verified working 2026-07-17 The adapter builds the direct endpoint from the DOI rather than downloading the wrapper.

Browser limitation

Firefox does not expose Chrome's downloads.onDeterminingFilename hook, so papio cannot correlate a download back to its job by tab or provider host there. The four click-method adapters — informit, sciencedirect, jamanetwork, and annualreviews — stay human-assisted in Firefox by design: the adapter does not invoke the page's download control at all, and the human clicks it and then uses Send PDF to papio to adopt the file. Direct href, url, meta, and api adapters carry their own job-scoped filename and are unaffected; they remain subject to their individual route status above.

Reporting a broken provider

When a previously working route changes, keep the job ID and run papio adapter diagnose <job-id>. Report the provider, route, and diagnostic output without credentials, cookies, or page contents.