Skip to content
Back to skills

Plos Open Access Api

ASecurity

Search PLOS open access journals with full-text Solr-powered API

  • 3,639 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added June 6, 2026
researchpythongobashapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned June 6, 2026

npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill plos-open-access-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Plos Open Access Api?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Plos Open Access Api
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/brycewang-stanford-plos-open-access-api/badge)](https://www.skillsdirectory.com/skills/brycewang-stanford-plos-open-access-api)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: plos-open-access-api
description: "Search PLOS open access journals with full-text Solr-powered API"
metadata:
  openclaw:
    emoji: "πŸ”¬"
    category: "literature"
    subcategory: "search"
    keywords: ["PLOS", "open access", "biomedical", "Solr search", "full text", "peer reviewed"]
    source: "https://api.plos.org/"
---

# PLOS Search API

## Overview

PLOS (Public Library of Science) publishes 7 peer-reviewed open access journals covering biology, medicine, genetics, and more. The Search API provides Solr-powered full-text search across all PLOS content β€” 350K+ articles, all freely available under CC-BY licenses. No authentication required. Particularly valuable for biomedical and life sciences systematic reviews.

## API Endpoint

### Base URL

```
https://api.plos.org/search
```

### Search Examples

```bash
# Basic keyword search
curl "https://api.plos.org/search?q=CRISPR+gene+editing&rows=20&wt=json"

# Search in specific fields
curl "https://api.plos.org/search?q=title:\"machine learning\"+AND+abstract:biomarker&wt=json"

# Filter by journal
curl "https://api.plos.org/search?q=microbiome&fq=journal:\"PLOS ONE\"&wt=json"

# Filter by date range
curl "https://api.plos.org/search?q=COVID-19+vaccine&\
fq=publication_date:[2024-01-01T00:00:00Z TO 2026-12-31T23:59:59Z]&wt=json"

# Filter by article type
curl "https://api.plos.org/search?q=climate+change&fq=article_type:\"Research Article\"&wt=json"

# Return specific fields only
curl "https://api.plos.org/search?q=deep+learning&fl=id,title,author,publication_date,score&wt=json"
```

### Search Fields

| Field | Description | Example |
|-------|-------------|---------|
| `title` | Article title | `title:"attention mechanism"` |
| `abstract` | Abstract text | `abstract:neural+network` |
| `body` | Full text body | `body:transformer` |
| `author` | Author name | `author:"Vaswani"` |
| `subject` | Subject area | `subject:"Neuroscience"` |
| `journal` | Journal name | `journal:"PLOS Medicine"` |

### Query Parameters

| Parameter | Description | Default |
|-----------|-------------|---------|
| `q` | Solr query (supports AND/OR/NOT) | Required |
| `fq` | Filter query (narrows without affecting score) | None |
| `fl` | Fields to return (comma-separated) | All |
| `rows` | Results per page (max 999) | 10 |
| `start` | Pagination offset | 0 |
| `sort` | Sort order | `score desc` |
| `wt` | Format: `json` or `xml` | `xml` |
| `hl` | Enable highlighting | `false` |

### Available Return Fields

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | DOI |
| `title` | string | Article title |
| `author` | array | Author names |
| `abstract` | string | Abstract text |
| `body` | string | Full text (large) |
| `publication_date` | date | Publication date |
| `journal` | string | Journal name |
| `article_type` | string | Article type |
| `subject` | array | Subject categories |
| `score` | float | Relevance score |

### PLOS Journals

| Journal | Scope |
|---------|-------|
| PLOS ONE | Multidisciplinary |
| PLOS Biology | Life sciences |
| PLOS Medicine | Clinical medicine |
| PLOS Genetics | Genetics and genomics |
| PLOS Computational Biology | Computational biology |
| PLOS Pathogens | Infectious disease |
| PLOS Neglected Tropical Diseases | Tropical medicine |

## Python Usage

```python
import requests

BASE_URL = "https://api.plos.org/search"


def search_plos(query: str, rows: int = 20,
                journal: str = None,
                from_date: str = None,
                fields: str = None) -> list:
    """Search PLOS open access articles."""
    params = {
        "q": query,
        "wt": "json",
        "rows": rows,
        "fl": fields or "id,title,author,abstract,publication_date,journal,score",
    }

    fq_parts = []
    if journal:
        fq_parts.append(f'journal:"{journal}"')
    if from_date:
        fq_parts.append(
            f"publication_date:[{from_date}T00:00:00Z TO NOW]"
        )
    if fq_parts:
        params["fq"] = " AND ".join(fq_parts)

    resp = requests.get(BASE_URL, params=params)
    resp.raise_for_status()
    data = resp.json()

    results = []
    for doc in data.get("response", {}).get("docs", []):
        results.append({
            "doi": doc.get("id"),
            "title": doc.get("title"),
            "authors": doc.get("author", []),
            "date": doc.get("publication_date", "")[:10],
            "journal": doc.get("journal"),
            "abstract": (doc.get("abstract", [""])[0])[:300]
                        if isinstance(doc.get("abstract"), list)
                        else (doc.get("abstract", ""))[:300],
        })
    return results


def get_full_text(doi: str) -> str:
    """Retrieve full text body of a PLOS article."""
    params = {
        "q": f'id:"{doi}"',
        "fl": "body",
        "wt": "json",
    }
    resp = requests.get(BASE_URL, params=params)
    resp.raise_for_status()
    docs = resp.json().get("response", {}).get("docs", [])
    return docs[0].get("body", "") if docs else ""


# Example: search PLOS Computational Biology
papers = search_plos(
    "protein structure prediction",
    journal="PLOS Computational Biology",
    from_date="2024-01-01",
)
for p in papers:
    print(f"[{p['date']}] {p['title']}")
    print(f"  DOI: {p['doi']}")

# Example: full-text search across all PLOS
papers = search_plos("body:reinforcement+learning AND title:robot")
for p in papers:
    print(f"{p['title']} β€” {p['journal']}")
```

## Advanced Solr Queries

```bash
# Phrase proximity search (words within 5 of each other)
q=abstract:"machine learning"~5

# Boosted field search
q=title:"CRISPR"^2 OR abstract:"CRISPR"

# Wildcard search
q=title:neuro*

# Range query on dates
fq=publication_date:[2024-01-01T00:00:00Z TO 2024-12-31T23:59:59Z]
```

## Rate Limits

No formal rate limit, but PLOS requests courtesy delays of 1 request per second for bulk operations. No authentication needed.

## References

- [PLOS API Documentation](https://api.plos.org/)
- [PLOS Search Tips](https://journals.plos.org/plosone/s/search)
- [Solr Query Syntax](https://solr.apache.org/guide/solr/latest/query-guide/standard-query-parser.html)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.