Skip to main content

Discovering data catalogs

Three different jobs:

JobWhat you wantWhere to go
Find catalogs already in this registryFilter by country, type, software, or URLquery-examples.md, agents/query.md
Find catalogs not yet registeredNew portals, geoportals, repositoriesThis page, then CONTRIBUTING.md
List datasets inside a registered catalogRemote catalog APIs, with type filtersharvest.md

This page is for the second job: locating real catalog installations in the wild, checking they are not duplicates, and preparing them for a pull request. Coding agents should follow the shorter checklist in agents/discover.md. What to hunt next, and which prompts actually produced catalogs: agents/improve.md.

The registry records catalogs (portals, geoportals, repositories, and similar infrastructure). It does not store the datasets inside those catalogs. To crawl those datasets, see harvest.md.

Guides​

GuideUse when
Search engines and internet mapsGoogle, Censys, Shodan, FOFA, URLScan, crt.sh, and similar tools
Agents, Cursor, ChatGPTConfigure MCP, APIs, Custom GPTs, and LLM clients to use those tools
Open data portalsCKAN, DKAN, EKAN, OpenDataSoft, Socrata, uData, Magda, JKAN, Junar, EntryScape, ArcGIS Hub, Idra, Liferay, POMOSAM, oPortal, OGD India, data eye, Piveau, Our Open Data, DataPress, ResourceContracts, RDF Online Repository, Guangxi, ODWeb, OpenGov
GeoportalsOverview; SDI stacks: discovery-geoportals-sdi.md; viewers: discovery-geoportals-viewers.md (GISApp, SmartMap, SmartGIS, ISY Map, Avinet, MAP+, EnviMAP, PISO, GDi Visios, MapGuide, Zeljko GIS, SeaSketch, XY Maps, Hajk, Origo, myCarta, AddSpatial, KortInfo, …)
Scientific repositoriesInstitutional IRs and CRIS (DSpace, Hyrax, Figshare, Pure, Converis, Omega-PSIR, Archipelago, Redivis, DABAR, OpenScience.si, …); domain repos: discovery-scientific-domain.md
Metadata catalogsFAIR Data Point, Aristotle MDR, Fusion Registry, Metadata Browser, CBD Clearing-House, WMO OSCAR
Indicators and microdataPxWeb, PxStat, DGBAS Web, OpenSDG, Goal Tracker, IMF NSDP, .Stat Suite, Knoema, SDMX-RI, GENESIS-Online, IBIS-PH, DHIS2, FENIX, TabNet, SparkMap, eDatos, Cancer-Rates.info, Conduent HCI, Virtual LMI, DataWarehousePro, Beyond 20/20, NADA, NESSTAR, REDATAM, Colectica, OBiBa Mica, IPUMS, StatPlanet
Search, ML, API, marketplacesData search engines (Idra, OpenAIRE), ML catalogs, API directories, data marketplaces
  1. Confirm the candidate is a catalog: it lists or serves datasets, maps, indicators, or metadata — not a news site, a single spreadsheet, or a login-only intranet.
  2. Search the registry first. Duplicate link values fail quality checks (DUPLICATE_LINK / DUPLICATE_LINK_NORMALIZED).
  3. Prefer data/scheduled/ for unverified finds. Promote later; see scheduled.md.

Duplicate check against the DuckDB export:

SELECT id, name, link, catalog_type, status
FROM catalogs
WHERE lower(link) LIKE '%example.gov%'
OR id = 'examplegov';

Also search data/scheduled/ if that directory is not empty. Do not walk every YAML file under data/entities/ unless you are editing a specific record.

Where catalogs usually live​

  • National open-data sites: /data, /opendata, /datasets, data.gov.*, datos.*, donnees.*
  • Statistics offices, mapping agencies, environmental agencies, and universities
  • Local government: city/region sites, opendata. subdomains, ArcGIS Hub sites
  • Research: institutional repositories, Dataverse, DSpace, GBIF IPT, re3data-listed repos

Search with the local language (datos abiertos, données ouvertes, offene daten, dados abertos, 开放数据) plus the country or city name. Restrict with site:.gov, site:.gob.*, or the national government TLD. Operators, Censys/Shodan/FOFA queries, and other indexes: discovery-search-tools.md (FOFA is the Censys alternative when Platform search is unavailable). Per-platform queries: the guides above.

Existing lists (start here)​

Many platforms publish installation galleries. Cross-check each URL against the registry before adding it. High-yield sources:

SourceTypical catalogs
CKAN ecosystemCKAN open-data portals (automated: scripts/sync_ckan_ecosystem.py)
CKAN Ecosystem InsightsWeekly-crawl dashboard of every tracked CKAN portal (dataset counts, versions, reachability). Machine-readable rollup: dashboard-data/dashboard.json — diff its instances list against exports to spot unregistered or moved CKAN sites
DatashadesCKAN and other portals
data.europa.eu cataloguesEU and member-state catalogs
GeoNetwork galleryGeoNetwork geoportals
INSPIRE geoportalEuropean spatial catalogs
re3dataResearch data repositories
Dataverse installationsDataverse
STAC IndexSTAC catalogs
Open Data InceptionOpen-data portals
OpenSDG communitySDG indicator sites
StatSilk galleryStatPlanet indicator maps (many Flash-era; confirm live Cloud/HTML5)
ISTAT StatKit implementationsIstat Data Browser / StatKit hubs
GBIF IPTBiodiversity IPT nodes
ArcGIS HubArcGIS Hub sites
EntryScape customersEntryScape catalogs
FAIR Data Point indexFAIR Data Point metadata catalogs
KOBV OPUS 4 referencesOPUS institutional repositories
About RADARRADAR Cloud and RADAR Local research data repositories
DHIS2National HMIS / public health indicator portals
YodaDutch university research-data vaults
OpenAIRE CONNECTNational and community research gateways
OpenAIRE Graph data sourcesResearch data repositories harvested by OpenAIRE (automated: scripts/extract_openaire_portals.py)
IPUMSHarmonized census and survey microdata collections
Symbiota portalsBiodiversity collection CMS portals
openEOEO cloud-processing backends
BreedbaseCrop breeding information systems
Landfolio portalsTrimble mining and land cadastre map portals
G3W-SUITEItalian QGIS WebGIS
Hajk usersSwedish Hajk webGIS
Origo / OrigosamverkanSwedish Origo municipal webbkartor
Aveki myCartaSwedish myCarta WebMap
Icebound AddSpatialSwedish AddSpatial municipal webbkartor
ResourceContractsOil/gas/mining contract repositories
RDF Online RepositoryMining and petroleum license-transparency portals
FAOSTAT / FENIXFAO indicator catalogs (AMIS, DAD-IS, WIEWS, GIFT)
DATASUS TabNetBrazilian health tabulators
SparkMapUS community and health indicator hubs
Sentinel Hub CatalogEO STAC collections
IMF DSBBNational Summary Data Pages (e-GDDS / SDDS / SDDS Plus)
InterMine registryOrganism and project mines
GRIN-GlobalNational / centre genebank installs
cBioPortalPublic and hospital cancer-genomics instances
TalkBankSpoken-language transcript banks (CHILDES, AphasiaBank, FluencyBank)
NOMADMaterials archive and self-hosted Oasis
XNATNeuroimaging archives
Open Microscopy / IDROMERO public image archives
ROAROpen-access repositories
OpenDOARDirectory of open-access repositories (country + software facets)
CoreTrustSealCertified repositories — keep only those with a public dataset catalog
ODIS catalogueOcean Data and Information System catalog records
WMO WIS2 GDCWIS2 Global Discovery Catalogue (node catalogs, not MQTT topics)
CLARIN / VLOLinguistic data centers and corpora
MappingSupport GIS serversUS ArcGIS Server REST roots (bounded list; skip unscoped US ArcGIS)
FGDC Service Status CheckerUS federal/state geospatial service hosts
GeoseerIndexed OGC services with layer counts
GeoNode galleryGeoNode installations (gallery leftovers still yield a few live hosts)
ArcGIS Instant Apps Filter Gallery / org galleriesPublic /apps/instant/{template}/?appid= apps (one record per public appid, not the gallery chrome)

Vendor “customers” and “community” pages are useful but noisy: skip demos, marketing sites, and expired domains.

Hunt patterns​

Recent discovery sessions (through 8 September 2026, v1.20.0) produced catalogs when they followed a named list, a software tenant pattern, or a missing type, not an unscoped web search. Copy these prompts; details live on the type pages.

HuntPrompt that worksStart fromAcceptReject
Software instanceWhich {software} catalogs are missing?Vendor gallery / hostname pattern / crt.sh for SaaS / GitHub forks and code search for open-source productsLive public UI matching that software.idDemos, marketplace tenants, a second copy of the same hub (including the same catalog on github.io and a custom domain); repeating a hunt from the last two weeks
National harvest sourcesWhich data sources harvested by {national portal} are missing?Harvest / organisations / catalogues API on the national siteIndependent origin catalog (CKAN, GeoNetwork, Hub, agency /opendata list)XML dataset feeds, price files, slices of the same national catalog, IR dumps already registered
Country university IRsThere are a lot of {country} universities… Which scientific repositories are missing?OpenDOAR, ROAR, re3data country, OpenAIRE GraphPublic IR that lists datasets (DSpace Dataset type, Dataverse, research-data community)Publication-only IRs, theses-only with no Dataset type, login walls, microstates with no universities
Country indicatorsWhich {country} indicators catalogs are missing?NSO site, health ministry, SDG, central bankQueryable table DB or indicator explorerPDF publications, CMS home, IMF NSDP already registered, agency PxWeb already on the national StatBank
Named directoryWhich catalogs from {list URL} are missing?One bounded URL (ODIS, CoreTrustSeal, STAC Index, WIS2 GDC, GeoNode gallery, Instant Apps Filter Gallery)Live catalog UI / harvestable APIPreservation systems with no dataset listing, org homepages, hijacked hosts
Subnational coverageWhich {country} cities and counties have geoportals that are missing?Municipal GIS product tenant list for that countryLocal owner in {CC}/{ISO-3166-2}/Google every city; REST of an existing Hub; “all 400 counties”; another PL/CZ/SK/IT/JP commune sweep after v1.20.0
Custom-software reviewReview custom {type} catalogs for new software definitionsCluster remaining software.id: custom by hostname/pathNew software.id when ≥3 independent installs or a first-party product page names itUnnamed one-off .gov roots; Leaflet-only guesses; keep those custom

Do more of: vendor tenant lists, harvest-source dumps, country shape (missing type), named directories, crt.sh for SaaS hostname patterns. Do less of: Google for “missing catalogs in the world”, university IR hunts for Monaco-class stubs, guessed HCI/Virtual LMI hostnames, repeating a software hunt from this week, city-by-city geoportal sweeps in countries whose municipal GIS product is already tenant-complete.

A hunt that finds 0 missing catalogs is complete — report that and stop. Agent recipes: agents/discover.md. Priority queue: agents/improve.md.

Identify the software​

Choose software.id from data/software/ (or custom if unknown). See software-taxonomy.md and catalog-types.md.

PlatformTypical signalsProbe (GET, timeout, public only)
CKANgenerator meta ckan, ckan-footer-logo, /api/3/action/package_listhttps://host/api/3/action/status_show
DKANCKAN-compatible API plus /api/1/searchsame as CKAN, plus /api/1/search
EKANekan_theme / profiles/contrib/ekan, Drupal 9+ DKAN-1 successor/jsonapi/dataset/dataset or /data.json
Socrata/api/views, *.socrata.com or SODAhttps://host/api/views.json?limit=1
OpenDataSoft/api/explore/v2.1/catalog/datasetsthat path
GeoNetwork/srv/api, /srv/eng/cswCSW GetCapabilities
GeoNode/api/layers/, /api/datasets//api/layers/
GeoServer/geoserver/ows, /geoserver/restWMS GetCapabilities
MapTiler ServerTitle MapTiler Server, /admin, port 3650/api/maps/{id}/style.json (e.g. streets)
MapServer/cgi-bin/mapserv, WMS GetCapabilities mentions MapServerWMS GetCapabilities
QGIS Serverqgis_mapserv.fcgi, GetCapabilities mentions QGIS ServerWMS GetCapabilities
mviewermviewer JS, /apps/*.xml configViewer URL plus public layer/theme config
Trimble Locus IMS/IMS/, tekla-mvc-commonPublic karttapalvelu tenant
Sitowise LouhiOpenLayers + partner=stwPublic karttapalvelu without /IMS/
Landfolioportals.landfolio.comCountry cadastre map portal (not ArcGIS REST)
Spatial SuiteSpatialMap browserdetect.js?ver=Municipal webkort
KortInfodrift.kortinfo.net/Map.aspx Site=One municipality tenant
IntraMaps Publictitle IntraMaps, ApplicationEngine, project=PublicOne council public project, not per module
Spectrum Spatial Analyst/connect/analyst/ title Spectrum SpatialOne public tenant, not per mapcfg=
Exponare/exponare/RestPublicApplication.aspxOne public tenant (not Public vs REST vs Mobile)
LocalMaps/localmaps/gallery title LocalMaps GalleryOne gallery per council; skip REST on the same host
GEUSMAP/geusmap/?mapname=One record per mapname
GISApp*.gisapp.roOne city tenant (not ArcGIS REST)
XY Mapsmaps.xymaps.com/{city}, /xymaps/MapOne public city tenant (not vendor home)
GeneGIS PAGIS{comune}.servizigis.itOne municipality tenant (not vendor hub)
GisMastergeoportale.sportellounicodigitale.it/GisMaster IdCliente=One comune tenant (not Default.aspx as a second copy)
LDP SITcloud.ldpgis.it/{slug}/, LdP ViewerOne comune or union slug (not vendor hub)
GFMaplet/page:s_italia:geoportale, *.prod.globogis.comOne geoportale tenant (not sportello home or Maggioli REST as a second copy)
HyG Mapgis/mapgis/mapa.jsp or /mapgis9/mapa.jsp, HyG Consultores footerOne public aplicacion= (not mapgisigserver)
iObčina/gisapp/Default.aspx?a=Kaliopa municipal tenant
G3W-SUITEg3w-client, /map/{group}/Public portal, not /admin or per-project
Astun iShare“Powered by iShare”, /mymaps.aspxUK My Maps / My House (not Cadcorp, not INDEPTH iShare)
Cadcorp SIS WebMapSIS WebMap / GeognoSISPublic web map (not disy Cadenza)
Hexagon M.App Enterprise/Apps/, Hexagon GeospatialPublic Apps portal, not per-app
CubeWerx CubeSERV/cubewerx/cubeserv GetCapabilitiesPublic service root, not per layer
Sentinel Hub*.sentinel-hub.com STAC /api/v1/catalogCatalog API, not EO Browser as a second catalog
DataWarehouseProapp.datawarehousepro.com/go/One tenant portal
Goal Tracker*.goaltracker.orgCountry SDG tenant
PxStatPxStat.Data.Cube_API / “PxStat Open Data Platform”Collection API (not PxWeb /api/v1/)
DGBAS Web/DgbasWeb/ Taiwan local statsCounty/city query UI; skip nstatdb
TabNettitle “TabNet Win32”, deftohtm.exe, cgi-bin/dhBrazilian DATASUS tabulator
FENIXfenixservices.fao.org, FAOSTAT API, CountrySTAT UIOne FENIX app (FAOSTAT, AMIS, …), not a FAO CKAN dump
SparkMapsparkmap.org / All Things state hubsOne public hub (not CARES HQ as a second copy)
eDatos*.edatos.io, /indicators/v1.0/indicatorsPublic hub (not the NSO CMS home)
Cancer-Rates.infocancer-rates.info/{st}/ public query UISkip login-walled tenant paths
Conduent HCI“Healthy Communities Institute” HTMLPublic community indicator home
Virtual LMI*.virtuallmi.com, /vosnet/State LMI home, not generic /analyzer
Beyond 20/20ReportFolders/reportFolders.aspxPublic report/cube catalog
RDF Online Repository*.revenuedev.orgCountry license portal
ResourceContractsresourcecontracts.orgHub or country contract catalog
Guangxi Public Data Open Platform{city}.data.gxzf.gov.cnOne city or provincial tenant
IsogeoOpenCatalog /api OpenAPI (not IsiGéo)/api or public OpenCatalog home
openEOlanding api_version + /collections + /processes/.well-known/openeo or API root
Mapbender/application/, Mapbender viewerHTML or title mentions Mapbender
gvSIG Online/gvsigonline/, select_public_projectPage title or footer gvSIG Online
deegree/deegree-webservices, CSW/WMS XML mentions deegreeOGC GetCapabilities
NetGIS Server/keos/, /Netgis7Page title NetGIS Server 7; optional wms.ashx GetCapabilities
Sampaş WebGIS/KentrehberiApp/IndexPage title contains SAMPAŞ WEBGIS
GiSoftGis/GiSoftGis/#/cityguidepublicAngular SPA; gi-ajax-loading-indicator; meta “Kent Rehberi Uygulaması”
Visor Urbanovisorurbano.{city}.gob.mx, {city}.visorurbano.comTitle Visor Urbano; skip visorguadalupe.com
Dobles Visor de Mapas/comun/js/leaflet.js, Leaflet.GoogleMutantCosta Rican municipal visor; title Visor de Mapas
GeoNubegeonube.com.ar/visor/{slug}Leaflet/bootleaf; Cambalache; custom domains OK
Geopixel Cidades{city}.geoportal.geopixel.com.brNext.js /_next/; confirm city; wildcard DNS
Geodados SaaS{city}.geodados.com.br/PublicoOpenLayers; acessoAnonimo; skip staff login root
MapMap{city}.mapmap.com.br/geo-portalLaravel citizen hub; skip cidadao PWA and Licença Suspensa
CTMGEO SigWEB{city}.ctmgeo.com.br/mapa/Title SIGWeb; not a DNS wildcard; skip generic SIGWeb
DRZ WebGISwebgis.drz.com.br/{city}/OpenLayers; title WebGIS/WebGis; nginx 404 for unknown slugs
dmCityweb.dmcity.fi/{city}/public/Title dmCity Web App; not generic Experience Builder
InfoGISwww.infogis.fi/{municipality}//codebase-infogis/; Infokartta Oy; not Louhi/IMS
Geo-IT GISgeoitgis.geo-it.be/touchviewer/Title Geo-IT GIS™ Touch Viewer; not generic MapGuide
Zeljko GISzeljko-gis.com Fusion / zopcina.zeljko-gis.com/{tenant}/Not generic MapGuide; one tenant, not a second cadastral UI
SIGimWeb/sigimweb/ or /sigim/, title SIGimWeb/gomap_web/; not generic MapGuide; not GOnet or JP Cadrin CIF
Geocentriqapp.geocentriq.com/mrc/{mrc}, geocentriq.min.jsOne MRC tenant, not per municipality; not SIGimWeb, GeoCentralis, or GOnet
GeoCentralisportail.geocentralis.com/public/sig-web/{mrc}/{code}/One MRC or city slug, not per geo-code; not Geocentriq or SIGALE
SIGALEsigale.ca/Main.aspx?mrc={code}One MRC code, not per municipality; not Geocentriq or GeoCentralis
NetGIS Runtime/NetGISRuntime/basis/index.jspTitle NetGIS - © WSP Danmark; not Turkish netgisserver
ArcGIS Experience Builderexperience.arcgis.com/experience/, jimu-core/init.js, Länsstyrelsen ext-webbgisNot dmCity tenants; not /apps/webappviewer/; not /apps/instant/
ArcGIS Web AppBuilder/apps/webappviewer/index.html?id=Not Experience Builder; not Instant Apps
ArcGIS Instant Apps/apps/instant/{template}/index.html?appid=Not Experience Builder; not Web AppBuilder; not Dashboards
ArcGIS Dashboards/apps/dashboards/{item-id}Not Instant Apps; not Hub; not arbitrary dashboards outside /apps/dashboards/
Argenmapsrc/js/app.js plus IGN Argenmap modulesNot generic Leaflet
WebEWIDtitle WebEWID / Portal MapowyNot authenticated role portals; not EWMAPA geoportal2.pl
GAUSS WebCity{org}.gis.ba, /webcity/, dist/mapstore2.js, logo_gauss.pngNot generic MapStore; not VertiGIS WebOffice WebCity
Pozi{council}.pozi.comTitle Pozi Web Map; not IntraMaps or Exponare
JMap/JMapWeb/ or JMap NG /services/ng/Not hostnames that merely contain jmap
GIS Cloud{city}.giscloud.comNot MuniSight login
MRF Web Map{county}.mrf.com / js/lib/mrf/Not web.munisight.com (munisight)
MuniSightapp.munisight.com/{Tenant} or {tenant}.gis.catalisgov.ca Catalis Login.aspxNot mrf; not generic GeoMedia WebMap
GeoMedia SmartClient Public Mapspublicmaps.gisquadrat.com/BP/WEPM.aspx ig.publicmapsNot GeoMedia WebMap $GP; not ERDAS APOLLO
SIT WebGiswebgis.sit-puglia.it/{comune}/ ng-app="WebApp" or SIT-Not Regione Puglia GeoNetwork; not Lizmap
p.mapper/pmapper/ or {city}.geo-portale.itNot UMN MapServer as the public catalog
Weavetitle Weave Map webpack app.*.jsNot GeneWeaver; not IntraMaps or Pozi
eKMap Cloudassets/ekmapboxgl/ekmap-mapboxgl.jsNot quyhoach.hanoi.gov.vn Next.js; not Vinh Phuc OL or HCMC VLAB
OVIE/js/libs/OpenLayers/OL.js + MaterializeNot Mission Viejo geoviewer.io; not INEGI /mdm6/ (mxsig)
SOFTPRO{city}.cadastre.com.ua / SOFTPRO /js/locale/ua.jsNot kadastr.gov.ua or map.land.gov.ua
MxSIG/mdm6/ or /mxsig2/ amplify.jsNot OVIE
cardo/net3/public/, cardo.MapPublic map/catalog under /net3/public/
GC Navigeocloud.jp/webgis/Tenant WebGIS home
NOL-ISmaps.nol-is.de / static.nol-is.dePublic municipal geoportal
map.apps/mapapps/con terra viewer; catalog UI may be smartfindersdi
MapSolution/MapSolution/apps/home/welcome, title Home MapSolutionIP SYSCON viewer; not con terra mapapps
CoGISCoGIS PortalPortal home; elitegis only if that is the branded viewer
OpenGeoPortalfederated layer searchGeoportal home, not a single layer
Knoema*.knoema.com or branded hubPortal home only — not every dataset URL
StatPlanettitle StatPlanet, data.csv / StatPlanet CloudPublic explorer home, not a single indicator URL
SDMX-RINSIWebService / NSIStdV20ServicePublic NSI/SDMX catalog
GENESIS-Onlinegenesis-online.css or gor-webapp; /genesis/online or /datenbank/onlineTable catalog (POST-heavy API)
IBIS-PH/ibisph-view/, IBIS-QPublic indicator home
eDatos/indicators/v1.0/indicators, *.edatos.ioJSON-stat or public ODS UI
Cancer-Rates.infocancer-rates.com/{code}/Public query UI, not login
Conduent HCI“Healthy Communities Institute”Public indicator home
Virtual LMI*.virtuallmi.com, /vosnet/Public LMI home
DHIS2/api/system/info, /dhis-web-commons/JSON version from system info; skip login-only HMIS
IPUMS*.ipums.org, extract UICollection home (USA, International, CPS, …), not a single extract
OpenAIREexplore.openaire.eu, *.openaire.eu CONNECT gatewayEXPLORE or national/community gateway home, not a single research product
Yodayoda., public landing + DataCiteInstitutional public dataset landing, not the login vault
Our Open Data/assets/cms/public.cssCatalog home, not a numeric dataset page
DataPressCKAN API plus DataPress chromePrefer datapress over ckan when branded
HaploHaplo research repositoryPublic outputs/data catalog
FAIRDOM-SEEKFAIRDOMHub / WorkflowHubInvestigations/catalog home
RAMADDARAMADDA repository UIFolder/catalog entry
ICATfacility data catalogPublic search or documented REST/OAI
BelsisIMS KRHims.*/Projects/*/Pages/KRH.aspxASP.NET KRH city-guide; do not confuse with Netcad Netigma
VertiGIS WebOffice/synserver, /WebOffice/synserver, wo-hosting.vertigis.com, map.geoportal.atPage title VertiGIS WebOffice; weboffice_packed.css; core/flex/mobile clients
VertiGIS Studio Web/vertigisstudio/web/?app=, /gcx/WebViewer/?app=, /Geocortex/WebViewer/?app=, apps.vertigisstudio.com, apps.vertigisstudio.eu#gcx-app; GA title VertiGIS Studio Web; not Html5Viewer or Essentials REST sites
Geocortex Essentials/Geocortex/Essentials/REST/sites, /Html5Viewer/, *.geocortex.comTitle Geocortex Essentials Sites Directory or Geocortex Viewer for HTML5; licensed Geocortex footer
GeoMedia WebMap / Geospatial Portal/geoportal01/, /cdngiportal/, /msip/Full.aspx, /Online_Mapping/Version: + Licensed to:; Intergraph.WebSolutions / $GP.; title may be Geospatial Portal or GeoMedia WebMap Publisher Portal
disy Cadenza/cadenza/, /public/, /pages/map/, /fachauswertungweb/cadenza/disy in HTML; Cadenza Web or Workbooks UI; guest login plus theme/workbook navigator
ArcGIS Server/rest/services, /arcgis/rest/services/rest/info?f=pjson
ArcGIS Hub/api/search/v1, portal sharing REST/api/search/v1
Idra/IdraPortal/, /Idra/api/v1/Federation UI or REST JSON; usually catalog_type: Data search engine
FAIR Data PointRDF DCAT at /, fdp-client, /swagger-uiGET with Accept: text/turtle or application/ld+json
Aristotle MDRAristotle registry of data elements / vocabulariesPublic registry home or /api/v4/
Fusion RegistrySDMX structural metadata, Fusion Registry brandingSDMX REST catalog
Metadata BrowserMetadataWorks catalog UIPublic browser home
Wagmap / わが街ガイドwww2.wagmap.jp, GeoAccessJSTenant map gallery
SonicWebwww.sonicweb-asp.jp/{slug}/, sonicweb.jsTenant map home
GeDA-Public*.geogeo.jpTenant eマップ home
Geolonia スマートマップ{org}.tottori-geomap.jp, Next.js GISTenant map UI (not Kazakhstan smartmap)
EWMAPA*.geoportal2.pl, GEOBIDPublic municipal SIP
GeoMapFishngeo / gmf-, /themes JSONTheme API plus map UI
Tianditu天地图 / tiandituPublic province or city node
MapGIS IGServer/igs/rest/mrcs/docs, /igs/rest/servicesIGS REST catalog; not ArcGIS on a mapgis.* host
MasterportalMasterportal config / LGV viewerPublic layer tree
WIS2 Boxwis2box, pygeoapiOGC API or discovery UI
Liferay (open data only)RISP / datos abiertos moduleDataset listing, not a CMS homepage
oPortal/oportal/Government catalog home
OGD Platform Indiadata.gov.in tenantMinistry/state catalog
Elsevier Digital Commonsbepress / Digital CommonsIR root + OAI
InstDBFairStack / InstDBInstitutional node home
WEKO3WEKO3 IRRepository root
OBiBa MicaMica / OBiBa study catalogPublic /ws/ or study search
Dataverse/api/dataverses, /api/info/version/api/info/version
DSpace/oai/request?verb=Identify, /handle/OAI-PMH Identify
Invenio / Zenodo-like/api/records/api/records?size=1
OPUS/oai?verb=Identify, OPUS 4 UIrepository-root /oai?verb=Identify
RADAR/radar/de/home, /oai/OAIHandler, /radar/api/datasetsOAI Identify and datasets JSON with totalHits
Symbiota/collections/datasets/rsshandler.php, “Powered by Symbiota”Collection search and/or dataset RSS
CONTENTdm*.contentdm.oclc.org, /digital/api/collectionsthat path and/or /oai/oai.php?verb=Identify
Omeka S/api JSON-LD, /api/items/api/items
Fedora Repository/fcrepo/rest or /restFedora version headers; prefer Hyrax/Islandora/PHAIDRA if that is the public UI
PHAIDRA/api/oai, /api/search/selectOAI Identify
Esploro*.esploro.exlibrisgroup.com or campus /esploroInstitutional research-outputs portal
ConverisClarivate Converis CRISPublic datasets module, not publications/persons
Omega-PSIROmega-PSIR / “Baza Wiedzy”University CRIS root (Poland)
TalkBank*.talkbank.org, CHAT / CLANOne bank home (CHILDES, AphasiaBank, …), not a transcript
CLLD*.clld.org, clld-staticOne project app, not a language or parameter page
LabKey Serverbegin.view, Panorama PublicPublic project/study home, not a single assay run
Synapsesynapse.org, Sage BionetworksPortal or project catalog, not a syn######## file
XNAT/xnat/, /data/projectsPublic project catalog, not a session
OMERO/webclient/, IDRRepository home, not a single image
Kadi4Mat/api/records, Kadi4Mat chromePublic instance, not a login-only lab tenant
TR32DB/site/index.php + /lib/js/generic/helper.jsNot CRC806DB (crc806db.uni-koeln.de)
e!DALe!DAL / IPK GaterslebenPublic DOI catalog, not a single landing
NOMAD/prod/v1/api/v1/infoOasis or central archive, not a calculation entry
InterMine/begin.do, /service/versionOne mine, not intermine.org or a gene report
GRIN-Global/gringlobal/National/centre install, not the vendor homepage
PlutoFapi.plutof.ut.ee, PlutoF workbenchWorkbench/DOI catalog — not UNITE
JGI Genome PortalMycoCosm / Phytozome / PhycoCosmPortal organism catalog, not IMG/GOLD/data.jgi.doe.gov
cBioPortal/api/info portalVersionInstance study list, not a single study view
ESA Science ArchiveTAP /tap/capabilitiesOne mission archive, not a FITS file
ODWebpath /odweb/City/provincial catalog, not the parent CMS
OpenGov{org}.opengov.com /transparencyBudget reports; skip Hub sites named OpenGov
IMF NSDP“National Summary Data Page”, SDMX XMLCountry NSDP page, not DSBB or a Knoema wrapper
PxWeb/api/v1//api/v1/
NADA/index.php/api or microdata UIsite home + API path

Browser checks that help without an API:

  • Page footer (“Powered by …”)
  • HTML generator meta tags
  • Network tab: calls to /api/3, /srv/api, /rest/services
  • robots.txt and /sitemap.xml sometimes list API paths

Cross-check at least two signals before setting software.id. If nothing matches, use custom rather than guessing.

URL patterns worth trying​

Only request public URLs. Use a short timeout. Stop on 401/403 — do not attempt to bypass authentication.

Open data

  • /api/3, /api/3/action/package_search
  • /data.json, /catalog.json, /catalog.xml (DCAT)
  • /api/explore/v2.1/catalog/datasets (OpenDataSoft)
  • /IdraPortal/ and /Idra/api/v1/ (Idra)
  • /oportal/ (Inspur oPortal)
  • /openinf/ (Seoul Open Data Plaza)
  • /assets/cms/public.css (Our Open Data)
  • *.revenuedev.org (RDF Online Repository tenant)
  • /contract/resources (ResourceContracts)
  • {city}.data.gxzf.gov.cn (Guangxi public-data tenant)
  • /odweb/ (ODWeb municipal/provincial catalog)
  • {org}.opengov.com /transparency (OpenGov financial reports)

Geospatial

  • GeoNetwork: /geonetwork/srv/eng/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetCapabilities
  • GeoServer: /geoserver/ows?service=WMS&version=1.3.0&request=GetCapabilities
  • MapServer: /cgi-bin/mapserv?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
  • QGIS Server: /cgi-bin/qgis_mapserv.fcgi?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities
  • mviewer: /apps/ config XML (often default.xml)
  • Isogeo: /api OpenAPI on an OpenCatalog host
  • openEO: /.well-known/openeo or /openeo/ landing JSON
  • gvSIG Online: /gvsigonline/
  • NetGIS Server: /Netgis7 (version title) and /keos/ (public KEOS viewer)
  • Sampaş WebGIS: /KentrehberiApp/Index (title SAMPAŞ WEBGIS)
  • GiSoftGis: /GiSoftGis/ (city-guide hash #/cityguidepublic)
  • BelsisIMS: /Projects/.../Pages/KRH.aspx on an ims. host
  • cardo: /net3/public/
  • GC Navi: tenant on geocloud.jp/webgis/
  • map.apps: /mapapps/
  • MapSolution: /MapSolution/apps/home/welcome
  • VertiGIS WebOffice: /synserver or /WebOffice/synserver (title VertiGIS WebOffice)
  • VertiGIS Studio Web: /vertigisstudio/web/?app= or /gcx/WebViewer/?app= (#gcx-app / title VertiGIS Studio Web)
  • Geocortex Essentials: /Geocortex/Essentials/REST/sites?f=pjson or /Html5Viewer/ (title Geocortex Essentials Sites Directory / Geocortex Viewer for HTML5)
  • Trimble Locus IMS: /IMS/ with imscore / tekla-mvc-common bundles
  • Sitowise Louhi: OpenLayers /Scripts/integration/openlayers/ plus Sitowise partner=stw
  • Landfolio: portals.landfolio.com/{country}/
  • Spatial Suite: /js/standard/browserdetect.js?ver= (SpatialMap)
  • KortInfo: drift.kortinfo.net/Map.aspx?Site=
  • IntraMaps Public: /intramaps90/default.htm?project= or {council}.spatial.t1cloud.com/spatial/intramaps/
  • Spectrum Spatial Analyst: /connect/analyst/mobile/ with mapcfg=
  • Exponare: /exponare/RestPublicApplication.aspx or /exponare/publicinvoker.aspx
  • LocalMaps: /localmaps/gallery (Eagle Technology NZ galleries)
  • GEUSMAP: /geusmap/?mapname=
  • GISApp: {city}.gisapp.ro
  • XY Maps: maps.xymaps.com/{city} or /xymaps/Map
  • Pozi: {council}.pozi.com (title Pozi Web Map)
  • JMap: /JMapWeb/ or JMap NG /services/ng/
  • GIS Cloud: {city}.giscloud.com
  • MRF Web Map: {county}.mrf.com or js/lib/mrf/
  • MuniSight: app.munisight.com/{Tenant} or {tenant}.gis.catalisgov.ca Catalis Login.aspx
  • GeoMedia SmartClient Public Maps: publicmaps.gisquadrat.com/BP/WEPM.aspx (ig.publicmaps.application.min.js)
  • SIT WebGis: webgis.sit-puglia.it/{comune}/ (ng-app="WebApp" + ol.js, or Angular SIT-{TOWN})
  • p.mapper: /pmapper/ or {city}.geo-portale.it
  • CommunityView: VECommunityView/cities/{city}/
  • MS-GIS: {city}.msgis.net
  • Weave: HTML title Weave Map (Cohga webpack app.*.js)
  • eKMap Cloud: assets/ekmapboxgl/ekmap-mapboxgl.js (not Hanoi quyhoach.hanoi.gov.vn)
  • MapMap: {city}.mapmap.com.br/geo-portal (Laravel citizen hub; not {city}.cidadao.mapmap.com.br)
  • OVIE: /js/libs/OpenLayers/OL.js + Materialize (INEGI economic GIS)
  • SOFTPRO: {city}.cadastre.com.ua or /js/locale/ua.js Ukrainian MBK
  • MxSIG: /mdm6/ or /mxsig2/ amplify.js Mapa Digital
  • ArcGIS Instant Apps: /apps/instant/{template}/index.html?appid=
  • ArcGIS Dashboards: /apps/dashboards/{item-id}
  • Argenmap: src/js/app.js plus IGN template (not Leaflet alone)
  • WebEWID: title WebEWID / Portal Mapowy on *.webewid.pl
  • GeneGIS PAGIS: {comune}.servizigis.it
  • GisMaster: geoportale.sportellounicodigitale.it/GisMaster/GisMaster/VisualDesc.aspx?IdCliente=
  • LDP SIT: cloud.ldpgis.it/{slug}/ or “LdP Viewer”
  • GFMaplet: /page:s_italia:geoportale or {comune}.prod.globogis.com
  • HyG Mapgis: /mapgis/mapa.jsp?aplicacion= or /mapgis9/mapa.jsp?aplicacion= (HyG Consultores footer; not /igs/rest/)
  • iObčina: /gisapp/Default.aspx?a=
  • G3W-SUITE: /map/{group}/{project}/ or /api/
  • Astun iShare: /mymaps.aspx or /myhouse.aspx
  • Cadcorp SIS WebMap: public SIS / GeognoSIS viewer
  • Hexagon M.App Enterprise: /Apps/
  • CubeWerx: /cubewerx/cubeserv?SERVICE=WMS&REQUEST=GetCapabilities
  • Sentinel Hub: https://services.sentinel-hub.com/api/v1/catalog/1.0.0/
  • disy Cadenza: /cadenza/ or /pages/map/default/index.xhtml (Cadenza Web / Workbooks)
  • ArcGIS: /arcgis/rest/services?f=pjson
  • GeoMapFish: /themes
  • MapGIS IGServer: /igs/rest/mrcs/docs?f=json or /igs/rest/services?f=json
  • Wagmap: https://www2.wagmap.jp/ plus tenant path
  • SonicWeb: https://www.sonicweb-asp.jp/ plus tenant path
  • GeDA-Public: {city}.geogeo.jp or {city}.e-map.geogeo.jp
  • Geolonia スマートマップ: {org}.tottori-geomap.jp (distinct from Kazakhstan smartmap)
  • WIS2 Box / pygeoapi: OGC API landing page

Scientific and metadata

  • OAI-PMH: /oai/request?verb=Identify or /oai?verb=Identify
  • Dataverse: /api/info/version
  • RADAR: /radar/api/datasets and /oai/OAIHandler?verb=Identify
  • Symbiota: /collections/datasets/rsshandler.php
  • Breedbase: /brapi/v2/serverinfo
  • ESGF: /esg-search/search
  • CONTENTdm: /digital/api/collections
  • Omeka S: /api/items
  • FAIR Data Point: catalog root with Accept: text/turtle
  • Digital Commons: repository root or /do/oai/
  • Fusion Registry: SDMX REST catalog
  • Knoema: branded hub home (not a dataset page)
  • Converis: public CRIS / datasets listing (stop on /ws keys)
  • Omega-PSIR: university “Baza Wiedzy” home
  • TalkBank: {bank}.talkbank.org collection home
  • CLLD: {project}.clld.org plus clld-static
  • PxStat: /public/api.restful/PxStat.Data.Cube_API.ReadCollection/
  • TabNet: deftohtm.exe / cgi-bin/dh query form
  • FENIX: FAOSTAT /faostat/api/v1/ groups-and-domains
  • SparkMap: public hub home (not CARES HQ)
  • LabKey: begin.view / Panorama Public project
  • Synapse: public project catalog (not syn########)
  • XNAT: /data/projects or /xnat/data/projects
  • OMERO: /webclient/ or /api/v0/m/projects/
  • Kadi4Mat: /api/records
  • TR32DB: /site/index.php + /lib/js/generic/helper.js
  • NOMAD: /prod/v1/api/v1/info
  • InterMine: /begin.do or /service/version
  • GRIN-Global: /gringlobal/
  • PlutoF: https://api.plutof.ut.ee/v1/
  • JGI: https://genome.jgi.doe.gov/portal/
  • cBioPortal: /api/info
  • ESA Science Archive: /tap/capabilities or /tap-server/tap/capabilities
  • IMF NSDP: country page titled “National Summary Data Page”

Generic

  • /api, /api/docs, /swagger.json, /openapi.json

After the record exists, scripts/apidetect.py can fill endpoints[] for known platforms:

python scripts/apidetect.py detect-single catalogdatagov --dryrun
python scripts/apidetect.py detect-software ckan --dryrun

Drop --dryrun only when you intend to write YAML. Prefer --action insert so existing endpoints are kept. Full command list: apidetect.md. URL reachability of link is a separate report: liveness.md.

Automated helpers in this repository​

ToolUse
python scripts/sync_ckan_ecosystem.py --dry-runCKAN sites from ecosystem.ckan.org; then sync without --dry-run into data/scheduled/
python scripts/extract_openaire_portals.py list-sources --output /tmp/openaire_sources.jsonOpenAIRE Graph data sources; then match-registry and add-scheduled --dry-run (openaire-sync.md)
python scripts/builder.py add-single URL --scheduledCreate one YAML from a verified URL
python scripts/apidetect.py detect-single catalogdatagovProbe known API paths on an existing record (apidetect.md)
python scripts/check_liveness.py --sample 10Probe link reachability (liveness.md)
python scripts/re3data_enrichment.py enrich --dry-runFill _re3data when a re3data identifier is present

CKAN sync details: ckan-sync.md. OpenAIRE Graph sources: openaire-sync.md. Re3Data: re3data.md.

Do not write internet-wide scanners in this repository. Vendor/government lists, documented search-engine queries, and targeted GETs against candidate hosts are enough. How to query Google, Censys, and similar indexes: discovery-search-tools.md.

One catalog per public product​

The same hostname often runs several GIS products. Register one YAML per public catalog UI, not per backend.

You seeKeepDo not also add
GeoNetwork (or CSW) + GeoServer /geoserverThe catalog (GeoNetwork / CSW)A second GeoServer record for the same layer list
Lizmap, QWC2, or mviewer + QGIS Server / MapServerThe viewer (lizmap / qwc2 / mviewer)qgisserver or mapserver on that host
ArcGIS Hub + ArcGIS Server REST on the same orgHub if it is the public catalog; Server if REST is the productBoth for the same layer set
STAC API + STAC Browserstacserver when the API is publicstacbrowser on the same origin
openEO + STAC on one APIopeneoA second stacserver row
MapGIS /igs/rest/ on a host named mapgis.*mapgisigserverarcgisserver unless the path is /arcgis/rest/
HyG Mapgis /mapgis/mapa.jsp + ArcGIS RESThygmapgis viewerarcgisserver or mapgisigserver on the same host; a second Mapgis row where GeoNetwork is already the catalog
VertiGIS Studio Web ?app= + ArcGIS REST or Html5Viewervertigisstudioweb viewerExtra ?app= GUIDs on the same tenant; do not retag Essentials /Html5Viewer/ as Studio Web
GET SDI / GeoMapFish / CoGIS wrapping GeoServerThe portal softwareBundled GeoServer
G3W-SUITE + QGIS Serverg3wsuite portalqgisserver on the same host
Landfolio map portal + ArcGIS RESTlandfolio cadastre UIREST already tagged arcgisserver
GISApp city viewer + webadaptor.gisapp.ro RESTgisapp tenantArcGIS REST as a second city catalog
XY Maps maps.xymaps.com/{city} + www.xymaps.com/{city}One public city tenantThe other SaaS hostname; Geocortex/ArcGIS Eckersall built for the same city
GeneGIS PAGIS city SIT + {comune}.servizigis.itThe public municipal tenantVendor hub, cloud alias of the same comune, IndexPC.aspx as a second copy of Index.aspx
LDP SIT Drupal + LdP Viewerldpgis municipal SITDrupal as software; MapCreator as a second catalog of the same comune
Maggioli STU geoportale + cartografia*.maggioli.cloud RESTgfmaplet geoportale pageREST as a second catalog of the same comune; GisMaster on sportellounicodigitale.it
KortInfo Site= + SpatialMap webkortThe public viewer the kommune documentsBoth IDs unless they are distinct public apps
Sentinel Hub STAC + EO Browsersentinelhub catalog APIstacserver or Browser as a second catalog
ArcGIS Hub + Instant Apps / Experience Builder / Dashboards / StoryMaps / Server on the same orgThe public catalog UI the owner documents (usually Hub or the named viewer)A second Esri product for the same layer set unless it is a distinct public catalog
Instant Apps Filter Gallery + each gallery itemOne Instant App per public appid that is itself a catalogThe Filter Gallery chrome as a second catalog; every widget/template
Finnish /IMS/ vs Sitowise Louhitrimblelocus if /IMS/; else louhiBoth IDs on the same karttapalvelu

Duplicate-check link and the service origin before add-single. Harvest follows the same grain: harvest-geoportals.md.

Verify before adding​

  1. Open the homepage. Confirm it is a catalog (search, dataset list, map layers, or metadata records).
  2. Confirm catalog_type from catalog-types.md. If a site is both a map viewer and an open-data portal, pick the primary product.
  3. Confirm country and, for regional/local owners, the subregion folder (US-CA/, FR-IDF/, …).
  4. Set status: active only if the site responds. Use inactive for dead sites you still want to record; use scheduled for unverified finds.
  5. Record working endpoints when you have them. Leave api: false if you did not find a public API.
  6. Add the record with add-single (recommended) or a YAML file whose filename matches id. Then follow agents/contribute.md / CONTRIBUTING.md: assign, validate-yaml --id {id}.

Conduct​

  • Respect robots.txt and site terms. Public catalog metadata only.
  • Space out requests (about one to two seconds between hosts is enough for manual work).
  • Do not collect personal data, credentials, or non-public APIs.
  • Do not treat a single CSV download page as a catalog unless it is clearly a catalog UI or harvestable endpoint.