Access PMC Open Access articles in BioC format for text mining
BY wentoraiUPDATED Oct 28, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.
instructions.md
---
name: bioc-pmc-api-826c3788616d
description: "Access PMC Open Access articles in BioC format for text mining"
metadata:
openclaw:
emoji: "🧬"
category: "literature"
subcategory: "fulltext"
keywords: ["bioc", "pmc", "text mining", "biomedical nlp", "full text", "pubmed central"]
source: "https://www.ncbi.nlm.nih.gov/research/bionlp/APIs/BioC-PMC/"
---
# BioC API for PMC Open Access
## Overview
The BioC API provides full-text articles from PubMed Central (PMC) in the BioC format — a simplified XML/JSON structure designed specifically for biomedical text mining. Unlike the standard PMC OAI service (which returns JATS XML), BioC pre-segments text into passages with offset annotations, making it ideal for NLP pipelines, named entity recognition, relation extraction, and other text mining tasks. Free, no authentication required.
## API Endpoints
### Base URL
```
https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/{PMCID}/unicode
```
### Retrieve by PMC ID
```bash
# JSON format (recommended for programmatic use)
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/PMC6267067/unicode"
# XML format
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_xml/PMC6267067/unicode"
# ASCII encoding (strips non-ASCII characters)
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/PMC6267067/ascii"
```
### Retrieve by PubMed ID
```bash
# Convert PMID to PMCID first, then query
curl "https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?ids=29346600&format=json"
# Returns: {"records": [{"pmid": "29346600", "pmcid": "PMC6267067", ...}]}
```
## BioC JSON Structure
```json
{
"source": "PMC",
"date": "2024-01-15",
"key": "collection.key",
"documents": [
{
"id": "PMC6267067",
"passages": [
{
"infons": {
"section_type": "TITLE",
"type": "title"
},
"offset": 0,
"text": "Article Title Here"
},
{
"infons": {
"section_type": "ABSTRACT",
"type": "abstract"
},
"offset": 25,
"text": "Background: This study investigates..."
},
{
"infons": {
"section_type": "INTRO",
"type": "paragraph"
},
"offset": 350,
"text": "The introduction text..."
}
]
}
]
}
```
Key fields:
- `passages[].infons.section_type`: TITLE, ABSTRACT, INTRO, METHODS, RESULTS, DISCUSS, CONCL, REF, FIG, TABLE
- `passages[].offset`: Character offset from document start
- `passages[].text`: Plain text content of the passage
## Python Usage
```python
import requests
import json
def get_bioc_article(pmcid: str, fmt: str = "json") -> dict:
"""Fetch a PMC article in BioC format."""
url = f"https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_{fmt}/{pmcid}/unicode"
resp = requests.get(url, timeout=30)
resp.raise_for_status()
return resp.json() if fmt == "json" else resp.text
def extract_sections(bioc_doc: dict) -> dict:
"""Extract text organized by section type."""
sections = {}
for doc in bioc_doc.get("documents", []):
for passage in doc.get("passages", []):
section = passage.get("infons", {}).get("section_type", "OTHER")
text = passage.get("text", "")
sections.setdefault(section, []).append(text)
return {k: "\n".join(v) for k, v in sections.items()}
# Example: fetch and parse
article = get_bioc_article("PMC6267067")
sections = extract_sections(article)
print(f"Title: {sections.get('TITLE', 'N/A')}")
print(f"Abstract length: {len(sections.get('ABSTRACT', ''))} chars")
print(f"Sections found: {list(sections.keys())}")
```
## Data Coverage
- **PMC Open Access Subset**: ~4M+ articles with CC licenses
- **Author Manuscript Collection**: NIH-funded author manuscripts
- Updates: New articles added daily
## Rate Limits
- Follow NCBI standard: **3 requests per second**
- For bulk access, use the PMC FTP service instead
- Add `tool=your_tool_name&email=your@email.com` to requests for priority queue
## Citation
When using this API in publications, cite:
> Comeau DC, Wei CH, Islamaj Dogan R, Lu Z. PMC text mining subset in BioC: about 3 million full text articles and growing. *Bioinformatics*, btz070, 2019.
## References
- [BioC-PMC API Documentation](https://www.ncbi.nlm.nih.gov/research/bionlp/APIs/BioC-PMC/)
- [BioC Format Specification](http://bioc.sourceforge.net/)
- [PMC Open Access Subset](https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/)
---
name: bioc-pmc-api-826c3788616d
description: "Access PMC Open Access articles in BioC format for text mining"
metadata:
openclaw:
emoji: "🧬"
category: "literature"
subcategory: "fulltext"
keywords: ["bioc", "pmc", "text mining", "biomedical nlp", "full text", "pubmed central"]
source: "https://www.ncbi.nlm.nih.gov/research/bionlp/APIs/BioC-PMC/"
---
# BioC API for PMC Open Access
## Overview
The BioC API provides full-text articles from PubMed Central (PMC) in the BioC format — a simplified XML/JSON structure designed specifically for biomedical text mining. Unlike the standard PMC OAI service (which returns JATS XML), BioC pre-segments text into passages with offset annotations, making it ideal for NLP pipelines, named entity recognition, relation extraction, and other text mining tasks. Free, no authentication required.
## API Endpoints
### Base URL
```
https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/{PMCID}/unicode
```
### Retrieve by PMC ID
```bash
# JSON format (recommended for programmatic use)
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/PMC6267067/unicode"
# XML format
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_xml/PMC6267067/unicode"
# ASCII encoding (strips non-ASCII characters)
curl "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/PMC6267067/ascii"
```
### Retrieve by PubMed ID
```bash
# Convert PMID to PMCID first, then query
curl "https://www.ncbi.nlm.nih.gov/pmc/utils/idconv/v1.0/?ids=29346600&format=json"
# Returns: {"records": [{"pmid": "29346600", "pmcid": "PMC6267067", ...}]}
```
## BioC JSON Structure
```json
{
"source": "PMC",
"date": "2024-01-15",
"key": "collection.key",
"documents": [
{
"id": "PMC6267067",
"passages": [
{
"infons": {
"section_type": "TITLE",
"type": "title"
},
"offset": 0,
"text": "Article Title Here"
},
{
"infons": {
"section_type": "ABSTRACT",
"type": "abstract"
},
"offset": 25,
"text": "Background: This study investigates..."
},
{
"infons": {
"section_type": "INTRO",
"type": "paragraph"
},
"offset": 350,
"text": "The introduction text..."
}
]
}
]
}
```
Key fields:
- `passages[].infons.section_type`: TITLE, ABSTRACT, INTRO, METHODS, RESULTS, DISCUSS, CONCL, REF, FIG, TABLE
- `passages[].offset`: Character offset from document start
- `passages[].text`: Plain text content of the passage
## Python Usage
```python
import requests
import json
def get_bioc_article(pmcid: str, fmt: str = "json") -> dict:
"""Fetch a PMC article in BioC format."""
url = f"https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_{fmt}/{pmcid}/unicode"
resp = requests.get(url, timeout=30)
resp.raise_for_status()
return resp.json() if fmt == "json" else resp.text
def extract_sections(bioc_doc: dict) -> dict:
"""Extract text organized by section type."""
sections = {}
for doc in bioc_doc.get("documents", []):
for passage in doc.get("passages", []):
section = passage.get("infons", {}).get("section_type", "OTHER")
text = passage.get("text", "")
sections.setdefault(section, []).append(text)
return {k: "\n".join(v) for k, v in sections.items()}
# Example: fetch and parse
article = get_bioc_article("PMC6267067")
sections = extract_sections(article)
print(f"Title: {sections.get('TITLE', 'N/A')}")
print(f"Abstract length: {len(sections.get('ABSTRACT', ''))} chars")
print(f"Sections found: {list(sections.keys())}")
```
## Data Coverage
- **PMC Open Access Subset**: ~4M+ articles with CC licenses
- **Author Manuscript Collection**: NIH-funded author manuscripts
- Updates: New articles added daily
## Rate Limits
- Follow NCBI standard: **3 requests per second**
- For bulk access, use the PMC FTP service instead
- Add `tool=your_tool_name&email=your@email.com` to requests for priority queue
## Citation
When using this API in publications, cite:
> Comeau DC, Wei CH, Islamaj Dogan R, Lu Z. PMC text mining subset in BioC: about 3 million full text articles and growing. *Bioinformatics*, btz070, 2019.
## References
- [BioC-PMC API Documentation](https://www.ncbi.nlm.nih.gov/research/bionlp/APIs/BioC-PMC/)
- [BioC Format Specification](http://bioc.sourceforge.net/)
- [PMC Open Access Subset](https://www.ncbi.nlm.nih.gov/pmc/tools/openftlist/)
COMPATIBILITY & REFERENCES
Platform guidance
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.
---name: liquid-biopsy-analytics-agent description: AI-powered comprehensive liquid biopsy analysis integrating ctDNA, CTCs, exosomes, and cfRNA for cancer detection, monitoring, and treatment guidance. license: MIT metadata: author: AI Group version: "1.0.0" created: "2026-01-19" compatibility:
Remove batch effects from RNA-seq data using ComBat, ComBat-Seq, limma removeBatchEffect, and SVA for unknown batch variables. Use when correcting batch effects in expression data.
This skill should be used when working with genomic interval data (BED files) for machine learning tasks. Use for training region embeddings (Region2Vec, BEDspace), single-cell ATAC-seq analysis (scEmbed), building consensus peaks (universes), or any ML-based analysis of genomic regions. Applies ...
Generate reproducible bioinformatics/data-science Methods + run documentation from workflow run artifacts (Nextflow/Snakemake/CWL), including a top-of-doc workflow summary, exact executed commands, tool versions, parameters, QC, and outputs.