0.0
The project is in a healthy, maintained state
Ruby client for the public CoworkingView API (https://api.coworkingview.com). It reads the CoworkingView Price Index — median, 25th and 75th percentile prices by city and product, with the sample size beside every figure — and searches the coworking catalogue. No API key. The Price Index is CC BY 4.0 and the attribution string is returned with every index result. The only runtime dependencies are net/http and json from the Ruby standard library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 5.25.0
~> 13.0
~> 3.24
 Project Readme

flex-office-data

Open data on flexible office prices — flex desks, fixed desks, private offices, day passes and meeting rooms — city by city, from the CoworkingView Price Index. One call returns a tidy table you can analyse, chart or join with your own data.

Language Package Install
Python coworkingview pip install coworkingview · conda install -c conda-forge coworkingview
R coworkingview install.packages("coworkingview")
Java coworkingview Maven Central io.github.coworkingview:coworkingview
Ruby coworkingview Build from integrations/ruby (not on RubyGems)
OCaml coworkingview opam install coworkingview
Swift CoworkingView Swift Package Manager · CocoaPods pod 'CoworkingView'
D coworkingview dub add coworkingview
Command line cwv (Rust) cargo install coworkingview · docker run --rm coworkingview/cwv · AUR · Chocolatey · Snap

LibreOffice Calc uses the same public API as spreadsheet functions (CWV_SPACES, CWV_PRICE, and the others in that README).

Backstage (@coworkingview/backstage-plugin-coworkingview) shows the same prices and spaces on a portal page.

Nuxt (@coworkingview/nuxt) auto-imports useCoworkingProperties and useCoworkingRates for the same two endpoints.

Thunderbird adds a “CoworkingView prices” button to the message and compose windows and looks up the same Price Index.

Joomla (mod_coworkingview, CoworkingView Workspace Prices) shows the same Price Index on a site page. That module is GPL-2.0-or-later.

LM Studio (coworkingview/coworkingview-workspace-prices) gives a local model tools for the same prices and a short catalogue search. That plugin is published with lms push.

Eclipse (com.coworkingview.eclipse.feature) adds a view, CoworkingView Workspace Prices, for the same Price Index. Install it from the p2 update site. The plug-in code is MIT.

XWiki (com.coworkingview:coworkingview-macro, CoworkingView Prices) is a wiki macro, {{coworkingview city="berlin"/}}, for the same Price Index. The macro code is MIT.

Redmine (redmine_coworkingview, CoworkingView Prices) adds the wiki macros {{coworking_rate(berlin)}} and {{coworking_rates(berlin)}} for the same Price Index. The plugin code is MIT.

OpenRefine adds the GREL function coworkingviewPriceIndex(city[, product]) for the same Price Index. Unzip the release into the OpenRefine extensions directory. The extension code is MIT.

Kimai (CoworkingViewBundle, CoworkingView Workplace) adds a workplace field (home, office, coworking) to timesheets and projects, and a report of hours by workplace. The plugin code is MIT. It does not include prices.

PostgreSQL (coworkingview) installs a snapshot of the same Price Index with CREATE EXTENSION coworkingview. The extension is pure SQL, MIT, and packaged for PGXN.

The Python, R, Java, Ruby and command-line packages read the same public API, follow the same specification and are tested against the same fixtures and expected outputs, so a number is the same whichever of those tools you use. The OCaml, Swift and D packages are typed clients for the Price Index and catalogue search on that API, tested against the recorded API fixtures.

Why

Flexible workspace is priced in thousands of operator pages, in different currencies, units and formats. Analysts, proptech teams, journalists and companies choosing where to open an office end up copying prices by hand. This kit gives you the medians and spreads behind the Price Index directly — with the sample size next to every figure, so you know how much to trust it.

Quickstart

Python

import coworkingview as cwv

rates = cwv.rates(city="berlin")
rates[["product", "unit", "median", "p25", "p75", "sample_size"]]
#           product   unit  median    p25    p75  sample_size
# 0       flex_desk  month   214.0  199.0  292.0           72
# 1        fix_desk  month   310.0  290.0  421.0           60
# 2  private_office  month   480.0  399.0  550.0           59
# 3        day_pass    day    35.0   <NA>   <NA>           59
# 4    meeting_room   hour    32.0   <NA>   <NA>           79

R

library(coworkingview)
rates <- cwv_rates(country = "germany")
subset(rates, product == "private_office", c(city_name, median, sample_size))

Java

import io.github.coworkingview.Client;
import io.github.coworkingview.RatesQuery;

Client client = Client.create();
client.rates(new RatesQuery().city("berlin"));

Ruby

require "coworkingview"

client = CoworkingView::Client.new
berlin = client.rates(city: "berlin")
puts berlin.attribution

OCaml

let client = Coworkingview.make () in
Coworkingview.market_rates client ~city:"berlin" ()

Swift

import CoworkingView

let client = try Client()
let berlin = try await client.rates(city: "berlin")
print(berlin.attribution ?? "")

D

import coworkingview;

auto client = new Client();
auto berlin = client.rates(city: "berlin");
// Print berlin.attribution next to any figure you republish.

Command line

$ cwv rates --city berlin
$ cwv spaces --city madrid --product meeting_room --format csv > meeting-rooms.csv

What's in the data

Function One row per Highlights
rates() city × product median, 25th/75th percentile, sample size, low_confidence flag
cities() city entry price (cheapest monthly option per space), coverage
spaces() space search the catalogue by city, product (incl. event spaces, virtual offices, meeting rooms), capacity, price — with a link to each listing
space(slug) space every published price option of one space

Products: flex_desk, fix_desk (dedicated desk), private_office, exclusive_bereich (exclusive area), day_pass, meeting_room, event_space, virtual_office, membership. New aggregates published by the Price Index appear in rates() without a package update.

Licence and attribution

  • Code: MIT (each package's LICENSE). The Joomla module in integrations/joomla/ is GPL-2.0-or-later, the licence the Joomla Extensions Directory requires for a listing.
  • Price Index data (rates(), cities()): CC BY 4.0. Credit CoworkingView Price Index with a link to https://coworkingview.com/en/tools/price-index. Every result carries the exact attribution text (df.attrs["attribution"] in Python, attr(x, "attribution") in R, stderr in the CLI).
  • Catalogue (spaces(), space()): names, prices and links are for search and reference. Descriptions, photos and logos belong to the operators and are not included. The packages cap a search at 200 results; please don't use them to copy the catalogue.

Data source and freshness

Figures come from the operator-published prices of the spaces listed on CoworkingView, normalised to a monthly price per desk (monthly products), per day (day pass) or per hour (meeting rooms). The API recomputes them as listings change; as_of on every row says when. Cities below the publication threshold are listed by cities() with published = false and no figures.

Browse offices

Repository layout

spec/               SPEC.md, API fixtures, golden outputs (the contract all packages share)
python/             coworkingview on PyPI / conda-forge
r/                  coworkingview on CRAN
rust/               cwv CLI and the coworkingview crate (crates.io, Docker)
integrations/java/  coworkingview on Maven Central
clients/ocaml/      coworkingview OCaml client (opam)
clients/swift/      CoworkingView Swift package (Swift Package Index, CocoaPods)
clients/d/          coworkingview D client (code.dlang.org)
integrations/matomo/CoworkingView/  Matomo 5 dashboard widget
integrations/libreoffice/  Calc add-in (CWV_SPACES, CWV_PRICE)
integrations/backstage/  Backstage frontend plugin
integrations/nuxt/  `@coworkingview/nuxt` module (`useCoworkingProperties`, `useCoworkingRates`)
integrations/thunderbird/  Thunderbird MailExtension (CoworkingView prices)
integrations/joomla/   Joomla 4/5 site module (CoworkingView Workspace Prices)
integrations/lmstudio/  LM Studio tools-provider plugin (coworkingview-workspace-prices)
integrations/eclipse/  Eclipse view (CoworkingView Workspace Prices) and p2 update site
integrations/postgres/  coworkingview extension for PostgreSQL (PGXN)
integrations/helm/cwv/  Helm chart cwv: CronJob for the cwv CLI (HTTPS Helm repository)
integrations/redmine/redmine_coworkingview/  Redmine wiki macros (CoworkingView Prices)
packaging/          AUR, Chocolatey and Snap manifests for cwv

Contributing

Issues and pull requests are welcome — see CONTRIBUTING.md. Found a wrong price? Report it on the space's page at coworkingview.com so it is fixed at the source.

Maintained by CoworkingView, the coworking and flexible office comparison platform for Europe and the UAE.