A method for utilizing Bluetooth beacon information to obtain and publish fine grained user location information, the method comprising: at a mobile device: requesting a plurality of Bluetooth beacon identifiers by the mobile device from a Bluetooth beacon location server; receiving the plurality of Bluetooth beacon identifiers by the mobile device from the Bluetooth beacon location server; storing the plurality of Bluetooth beacon identifiers in the mobile device; receiving, at the mobile device from a Bluetooth beacon, a Bluetooth beacon identifier, wherein the Bluetooth beacon is a device that provides the Bluetooth beacon identifier and is separate from the mobile device; determining, at the mobile device, whether the received Bluetooth beacon identifier corresponds to one of the stored Bluetooth beacon identifiers; and in response to determining that the received Bluetooth beacon identifier corresponds to one of the stored Bluetooth beacon identifiers: querying, by the mobile device, the Bluetooth beacon location server for Bluetooth beacon location information to which the Bluetooth beacon identifier is mapped in the Bluetooth beacon location server; receiving the Bluetooth beacon location information from the Bluetooth beacon server; and publishing the Bluetooth beacon location information to subscribers of a user of the mobile device by communicating the Bluetooth beacon location information from the mobile device to a publish-subscribe server, the method further comprising: at the publish-subscribe server automatically publishing the Bluetooth beacon location information to the subscribers of the user of the mobile device via a publish-subscribe interface in response to receiving the Bluetooth beacon location information from the mobile device and without requiring queries from the subscribers. requesting a plurality of Bluetooth beacon identifiers by the mobile device from a Bluetooth beacon location server; receiving the plurality of Bluetooth beacon identifiers by the mobile device from the Bluetooth beacon location server; storing the plurality of Bluetooth beacon identifiers in the mobile device; receiving, at the mobile device from a Bluetooth beacon, a Bluetooth beacon identifier, wherein the Bluetooth beacon is a device that provides the Bluetooth beacon identifier and is separate from the mobile device; determining, at the mobile device, whether the received Bluetooth beacon identifier corresponds to one of the stored Bluetooth beacon identifiers; and in response to determining that the received Bluetooth beacon identifier corresponds to one of the stored Bluetooth beacon identifiers: querying, by the mobile device, the Bluetooth beacon location server for Bluetooth beacon location information to which the Bluetooth beacon identifier is mapped in the Bluetooth beacon location server; receiving the Bluetooth beacon location information from the Bluetooth beacon server; and publishing the Bluetooth beacon location information to subscribers of a user of the mobile device by communicating the Bluetooth beacon location information from the mobile device to a publish-subscribe server, querying, by the mobile device, the Bluetooth beacon location server for Bluetooth beacon location information to which the Bluetooth beacon identifier is mapped in the Bluetooth beacon location server; receiving the Bluetooth beacon location information from the Bluetooth beacon server; and publishing the Bluetooth beacon location information to subscribers of a user of the mobile device by communicating the Bluetooth beacon location information from the mobile device to a publish-subscribe server, the method further comprising: at the publish-subscribe server automatically publishing the Bluetooth beacon location information to the subscribers of the user of the mobile device via a publish-subscribe interface in response to receiving the Bluetooth beacon location information from the mobile device and without requiring queries from the subscribers.