Sources Endpoint
The Sources endpoint covers journals, repositories, conference proceedings,
ebook platforms, and book series indexed in OpenAlex.
Endpoint path: sources
Client access: session.sources
from aletheca import AlethecaSession
from aletheca.endpoints import SourcesFilters
async with AlethecaSession() as session:
async for source in session.sources.iterate(
filters=SourcesFilters(type="journal", is_oa=True),
):
print(f"{source.display_name} — {source.issn_l}")
Supported Operations
| Operation |
Method |
Description |
| Get by ID |
session.sources.get("S123") |
Fetch a single source by OpenAlex ID or ISSN |
| Search |
session.sources.search("Nature") |
Search sources by name |
| Iterate |
session.sources.iterate(filters=...) |
Cursor-based pagination over filtered results |
SourcesFilters Field Reference
| Field Name |
Alias (OpenAlex) |
Type |
Description |
display_name |
display_name |
str |
Exact display name match |
type |
type |
str |
Source type: journal, repository, conference, ebook platform, book series |
is_oa |
is_oa |
bool |
Whether the source is Open Access |
host_organization |
host_organization |
str |
OpenAlex ID of the host organization (publisher) |
issn |
issn |
str |
ISSN (any ISSN associated with the source) |
issn_l |
issn_l |
str |
Linking ISSN |
has_apc |
has_apc |
bool |
Whether the source has article processing charges |
works_count |
works_count |
int |
Exact number of works in this source |
works_count_range |
works_count_range |
str |
Works count range (e.g., "1000-10000") |
cited_by_count |
cited_by_count |
int |
Exact citation count |
cited_by_count_range |
cited_by_count_range |
str |
Citation count range (e.g., "100000-1000000") |
Search & Geographic Filters
| Field Name |
Alias (OpenAlex) |
Type |
Description |
display_name_search |
display_name.search |
str |
Search within display names |
default_search |
default.search |
str |
Default search across multiple fields |
continent |
continent |
str |
Continent of the source's publisher |
has_issn |
has_issn |
bool |
Whether the source has an ISSN |
is_global_south |
is_global_south |
bool |
Whether the source is in the Global South |
x_concepts_id |
x_concepts.id |
str |
Concept ID (deprecated; prefer topics) |
Usage Examples
Find OA journals with an ISSN
from aletheca import AlethecaSession
from aletheca.endpoints import SourcesFilters
async with AlethecaSession() as session:
filters = SourcesFilters(
type="journal",
is_oa=True,
has_issn=True,
)
async for source in session.sources.iterate(filters=filters):
print(f"{source.display_name} — ISSN-L: {source.issn_l}")
Search sources by publisher
async with AlethecaSession() as session:
filters = SourcesFilters(host_organization="P4310320990")
async for source in session.sources.iterate(filters=filters):
print(source.display_name)
Filter by works count range
async with AlethecaSession() as session:
filters = SourcesFilters(
type="journal",
works_count_range="10000-1000000",
)
async for source in session.sources.iterate(filters=filters):
print(f"{source.display_name}: {source.works_count} works")