Search guide

Part 1 is for people. Part 2 is for AI agents, scripts, and crawlers — /llms.txt is the short version.

Part 1 — For researchers

Quick start

Type words into the search box; results are ranked by relevance across titles, authors, abstracts, and journal names. Narrow with the filters on the left, or with the syntax below. Paste a DOI to jump straight to a paper. Every example on this page is a live link — click to try it.

Query syntax — building blocks

PatternMeaningTry it
word wordMatch any of the words — papers matching more of them rank higher liquidity risk
"exact phrase"Words in exactly this order "credit default swap"
"…"~NPhrase with up to N positions of wiggle room (author phrases get ~1 automatically; ~0 forces exact order) "limits arbitrage"~2
term^NWeight a term (or quoted phrase) N× more heavily in ranking ESG^2 disclosure
10.xxxx/…Paste a DOI to find that paper 10.1111/jofi.13455

Accents never matter anywhere: putnins finds Putniņš. Wildcards (liquidit*) and single-word fuzzy matching (risk~1) are not supported.

Field prefixes

Prefix a term, quoted phrase, or bracket group to search one field only.

PrefixSearchesTry it
title:Titles only title:"asset pricing"
author: / creator:Author names (a quoted name still matches across a middle initial) author:"Jens Foerderer"
abstract: / abstractNote:Abstracts abstract:"machine learning"
journal: / publicationTitle:Journal name or ISSN journal:0022-1082
year: / date:A year (year:2015), or a range (year:2010-2020, also year:2010..2020) year:2010-2020
doi:DOI exactly doi:10.1111/jofi.13455
type:Document type. Results cover research papers (article, review) by default; a type: term or the Type filter opts into the rest: book-review, editorial, erratum, letter, conference-abstract, paratext, retraction, other type:erratum banking
field:(…)Apply one prefix to a whole bracket group author:(fama AND french)

An unknown prefix is not an error — foo:bar simply searches for the literal text.

Operators and brackets

OperatorMeaningTry it
AND / &&Both sides must match banking AND regulation
OR / ||At least one side must match fintech OR "financial technology"
NOT / !The next term must not match innovation AND NOT patent
+termRequired, even among loose words +ESG disclosure reporting
-termExcluded (same as NOT) +ESG -survey
( … )Group anything; nest freely (misconduct OR fraud) AND banking

Word operators must be UPPERCASE — lowercase and, or, not are searched as ordinary words. NOT, -, and + apply to the single term, phrase, or bracket group immediately after them.

Precedence — how it all combines

When a query mixes several constructs, they bind in this order, tightest first. Brackets override everything.

  1. Suffixes~N and ^N attach to the term or phrase they follow.
  2. Field prefixesauthor: etc. attach to the next term, phrase, or bracket group.
  3. UnaryNOT/-/! and + apply to the single item after them, so NOT a AND b means (NOT a) AND b.
  4. AND — binds tighter than OR: a OR b AND c means a OR (b AND c).
  5. OR.
  6. Space — loosest of all. Space-separated chunks form an any-of group: at least one chunk must match and every extra match improves ranking. So a b AND c means a (b AND c) — “a, or b-and-c”.

Two deliberate refinements to rule 6:

Worked examples

QueryReads as
liquidity risk either word; both rank higher
"price discovery" "dark pool" either phrase; both rank higher
"price discovery" AND "dark pool" both phrases required
(misconduct OR fraud) AND banking banking, plus at least one of misconduct/fraud
regulation OR author:"buhui qiu" about regulation, or by that author — a true union
author:putnins liquidity year:2015-2024 liquidity, by that author, in those years (prefixes filter)
author:(fama AND french) papers they co-authored
author:(fama OR french) "risk factors" that phrase, by either author
title:(climate -risk) climate in the title, but not risk
"earnings management" AND NOT abstract:survey the phrase anywhere, excluding survey-mentioning abstracts
year:(2008 OR 2020) "systemic risk" the phrase, in either crisis year
(bank OR banking) AND (liquidity OR funding) year:2010-2024 nested groups and a year filter together
NOT "working paper" everything except papers matching the phrase

When a query is malformed

Broken syntax never errors out. The parser repairs what it can — an unclosed quote runs to the end of the query, a missing ) is assumed, a dangling AND is dropped, a valueless prefix is ignored — runs the repaired query, and tells you exactly what it fixed in a note above the results (the JSON API and MCP return the same notes in a notices field).

Filters and facets

The left panel filters by journal, year, and open access. Filters behave like checkboxes: pick several journals to combine them (any of them matches), and mix them with year and open-access filters (all groups must match). Your selections stay pinned at the top of each facet, and sibling options remain visible so you can widen a filter without starting over. A year typed into the query (year:2015-2024) is different — it is a hard constraint that also narrows the year facet itself. Clear filters resets the panel but keeps your query.

The Criteria panel

The Criteria button beside the search box controls: scope (all fields, title, author, or abstract), sort (relevance, newest, oldest, author, title), whether abstracts are shown (long ones clamp to a few lines — “Show more” expands), match highlighting, and — when signed in — restricting results to your library or a tag.

Accounts, lists, and export

With a free account, the heart on every result saves the paper to your default “Saved papers” list, or any list you choose. Lists can be private, unlisted, or public, and you can invite collaborators who may edit list contents. Select multiple switches on batch mode for saving many papers at once. Papers also take personal notes and tags (search yours via Criteria → Library). Every paper page exports BibTeX; citation managers like Zotero pick up paper pages automatically.

What is in the corpus

A curated set of leading journals — the complete FT50 and more — across finance, accounting, management, and economics — see Journals for the list with rankings. Records are merged from Crossref, OpenAlex, and publisher exports and cross-checked against each other; a ✓ verified chip marks records that have had an extra editorial check.

Part 2 — For machines (AI agents & crawlers)

AI crawlers and agents are welcome — this corpus exists to make research easier to find — but human experience comes first. Automated clients are rate limited to roughly 12 requests per minute per crawler (HTTP 429 beyond; back off and retry). Prefer the JSON API or MCP over crawling facet permutations, and cite phds.io plus the paper's DOI when quoting. /robots.txt says the same thing formally; /llms.txt is the condensed machine manual.

URL grammar (HTML search)

ParameterTypeMeaning
qstringQuery, full syntax from Part 1
journal_namestring, repeatableExact journal name filter (OR across repeats)
fieldenum, repeatableDiscipline scope by journal: finance, economics, accounting, management, marketing, infosys. The web UI defaults to finance+economics+accounting (changeable via the chips, remembered per visitor); the API applies it only when passed.
yearint, repeatableYear filter (OR across repeats)
oayesOpen-access papers only
sortenumrelevance (default), newest, oldest, author, title
scopeenumall (default), title, author, abstract
page, ppintPage number; results per page (max 50)

Endpoints

EndpointReturns
GET /api/searchJSON — same parameters as above (plus per_page); total, papers (id, title, authors, journal, year, DOI, abstract, URLs), facet counts. CORS-open.
GET /papers/{id}.jsonThe paper's CSL-JSON record
GET /papers/{id}.bibBibTeX
GET /papers/{id}HTML with Highwire citation_* meta tags and schema.org ScholarlyArticle JSON-LD
GET /journalsThe curated journal list (HTML)
GET /sitemap.xmlSitemap index over every paper
GET /llms.txtThis page, condensed for machines

MCP connector

POST /mcp speaks the Model Context Protocol (streamable HTTP, stateless JSON — no session required). Tools: search_papers (query + filters, returns the JSON shape above) and get_paper (id or DOI → CSL-JSON). Add https://phds.io/mcp as a connector in Claude, ChatGPT, or any MCP client and ask for papers in plain language.