canonical: https://jentic.com/apis/gov.bc.ca/bcgnws

# Gov Bc Ca BC Geographical Names Web Service - REST API

The BC Geographical Names Web Service exposes searchable, authoritative records for the official place names of British Columbia, including features such as lakes, rivers, mountains, communities, and parks. It serves the Province's gazetteer with endpoints for keyword search, official-only and not-official-only search, spatial 'inside' and 'near' search, recent name decisions, name change history, and detail lookup by name or feature ID. The service responds in multiple output formats and supports a feature taxonomy enumeration for filtering by feature class.

## For AI agents

Search and retrieve official British Columbia geographical names - features, name histories, and name authority decisions - with no authentication required.

## Scope

Does not geocode addresses, render maps, or cover places outside British Columbia - use for searching the BC Geographical Names gazetteer only.

## Capabilities

- Search BC geographical names by keyword across official and unofficial records
- Limit search to officially adopted names or to not-official names only
- Find names whose feature lies inside a supplied bounding box or polygon
- Find names whose feature is near a supplied point within a distance
- List recent BC name authority decisions across a date range
- Look up the full record for a single name by name ID and output format
- Look up the full record for a feature by feature ID

## Use cases

### Authoritative Place Name Lookup

Resolve a possibly informal place reference (such as 'mount baker bc') to the official BC name and its feature class. GET /names/search performs a keyword search and the result identifies whether the name is officially adopted by the BC Geographical Names Office. Useful for downstream mapping or government correspondence that needs canonical names.

Example prompt: Search BC geographical names for 'mount robson' and return the name ID and the official adoption status of the top result.

### Spatial Names Around a Point

List every named geographical feature inside a polygon or near a coordinate to enrich a map with point-of-interest labels. GET /names/inside accepts bounding geometry and GET /names/near accepts a point and distance, both returning matching named features with classes such as lake, river, or peak.

Example prompt: List all BC geographical names within 5 kilometres of latitude 49.7 longitude -123.1 and return their names and feature classes.

### Name Change Monitoring

Track BC Geographical Names Office decisions over time so downstream maps and gazetteers can be refreshed promptly. GET /names/decisions/recent returns recent adoption and rescission decisions and GET /names/changes covers historical name changes. This is critical when reconciliation reflects modern Indigenous place names.

Example prompt: List BC name authority decisions from the most recent year and return the official names and decision dates.

### AI Agent Place Name Resolver

An AI agent built on Jentic disambiguates user references to BC places by calling the BC Geographical Names Web Service. The agent searches Jentic for 'find a bc geographical name', loads the names search operation, and returns the official record so downstream tools (maps, routing) use canonical identifiers.

Example prompt: Use Jentic to search 'find a bc geographical name' and resolve 'haida gwaii' to its official BC name record and feature class.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /names/search | Search BC geographical names by keyword |
| GET | /names/official/search | Search officially adopted BC names only |
| GET | /names/inside | Find names inside a bounding geometry |
| GET | /names/near | Find names near a coordinate |
| GET | /names/decisions/recent | List recent BC name authority decisions |
| GET | /names/{nameId}.{outputFormat} | Look up a single name by ID |
| GET | /features/{featureId} | Look up a feature by feature ID |

## Key resources

- **search** — Keyword search across all, official, and not-official BC geographical names
- **name** — Per-name detail lookup by name ID with output format selector
- **feature** — Feature detail lookup by feature ID
- **feature taxonomy** — Enumerate the classification of BC named features
- **name authority** — Recent name decisions and historical name change records

## Why Jentic

- **Setup:** Wiring the BC Geographical Names Web Service by hand means choosing among its production, test, and delivery hosts and mapping the gazetteer search routes yourself, even though no credential is required. Through Jentic you install once, import the BC Geographical Names service from the API Directory, and your agent calls it through one consistent path.
- **Permission scoping:** This service is read-only over the gazetteer, and even where a name or feature id appears in the path (/names/{nameId}, /features/{featureId}) no write exists, so limit the agent to the operations it needs, such as searching or looking up a named feature. You choose the operations it may call, so the agent cannot reach anything you have not included.
- **Credential handling:** This service needs no credential, so none is stored, and Jentic still routes each call through your own Jentic One instance so agent activity is logged consistently.
- **Discovery method:** Agents search Jentic by intent such as 'find a bc place name' or 'list named features inside a bounding box', and Jentic returns the matching BC Geographical Names operation with its parameters typed so the agent calls the right endpoint without reading the docs.

## Related APIs

- **BC Geocoder REST API** — BC Geocoder converts BC addresses to coordinates and complements the gazetteer's named-feature search
- **BC GeoMark Web Service** — Use GeoMark to share an area of interest, then query bcgnws for names inside it
- **OpenWeatherMap API** — Different domain - global place lookup via OpenWeatherMap's geocoding rather than authoritative BC names

## FAQ

### What authentication does the BC Geographical Names API use?

The OpenAPI spec defines no security schemes for this service, so requests are made anonymously over HTTPS. No bearer token or API key is required, and Jentic relays calls as-is without injecting credentials.

### Can I find geographical names inside a bounding box with the BC Geographical Names API?

Yes. GET /names/inside accepts bounding geometry parameters and returns all named features whose geometry falls inside it. For radius-based queries against a point, use GET /names/near instead.

### What are the rate limits for the BC Geographical Names API?

The spec does not declare specific rate limits. Because the service is shared public infrastructure, paginate large queries with the supplied page parameters and avoid issuing many parallel inside or near queries against wide regions.

### How do I look up a BC place name through Jentic?

Search Jentic for 'find a bc geographical name', load the GET /names/search operation, and execute with the name query parameter. With pip install jentic, the call returns the official BC name records along with name IDs and feature classes.

### Does the BC Geographical Names API return Indigenous and modern place names?

Yes. The service includes both officially adopted names - which now include many Indigenous place names - and not-official names. Use GET /names/official/search for officially adopted names only, and GET /names/decisions/recent to see recent adoption decisions.

### Can I limit what my agent is allowed to do with the BC Geographical Names API?

Yes. Because you run Jentic One yourself, your own rules decide which BC Geographical Names operations the agent can call, so you can allow only what it needs, such as GET /names/search for keyword lookups or GET /names/inside and GET /names/near for spatial queries, while excluding the rest. The service is read-only over the gazetteer, and even the id-based paths GET /names/{nameId} and GET /features/{featureId} perform no writes, so the agent can never modify data. Any operation you leave out of the allowed set is simply unreachable to the agent.
