diff --git a/homeassistant/components/device_tracker/icloud.py b/homeassistant/components/device_tracker/icloud.py
new file mode 100644
index 0000000000000000000000000000000000000000..a4adaa547bcc94c5693e939c82da8057b7e0f6bc
--- /dev/null
+++ b/homeassistant/components/device_tracker/icloud.py
@@ -0,0 +1,89 @@
+"""
+homeassistant.components.device_tracker.icloud
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Device tracker platform that supports scanning iCloud devices.
+
+It does require that your device has beend registered with Find My iPhone.
+
+Note: that this may cause battery drainage as it wakes up your device to
+get the current location.
+
+Note: You may receive an email from Apple stating that someone has logged
+into your account.
+
+For more details about this platform, please refer to the documentation at
+https://home-assistant.io/components/device_tracker.icloud/
+"""
+import logging
+
+import re
+from homeassistant.const import CONF_USERNAME, CONF_PASSWORD
+from homeassistant.helpers.event import track_utc_time_change
+
+SCAN_INTERVAL = 1800
+
+_LOGGER = logging.getLogger(__name__)
+
+REQUIREMENTS = ['https://github.com/picklepete/pyicloud/archive/'
+                '80f6cd6decc950514b8dc43b30c5bded81b34d5f.zip'
+                '#pyicloud==0.8.0']
+
+
+def setup_scanner(hass, config, see):
+    """
+    Set up the iCloud Scanner
+    """
+    from pyicloud import PyiCloudService
+    from pyicloud.exceptions import PyiCloudFailedLoginException
+    from pyicloud.exceptions import PyiCloudNoDevicesException
+
+    # Get the username and password from the configuration
+    username = config[CONF_USERNAME]
+    password = config[CONF_PASSWORD]
+
+    try:
+        _LOGGER.info('Logging into iCloud Account')
+        # Attempt the login to iCloud
+        api = PyiCloudService(username,
+                              password,
+                              verify=True)
+    except PyiCloudFailedLoginException as error:
+        _LOGGER.exception(
+            'Error logging into iCloud Service: %s' % error
+        )
+        return
+
+    def update_icloud(now):
+        """
+        Authenticate against iCloud and scan for devices.
+        """
+        try:
+            # The session timeouts if we are not using it so we
+            # have to re-authenticate.  This will send an email.
+            api.authenticate()
+            # Loop through every device registered with the iCloud account
+            for device in api.devices:
+                status = device.status()
+                location = device.location()
+                # If the device has a location add it. If not do nothing
+                if location:
+                    see(
+                        dev_id=re.sub(r"(\s|\W|')",
+                                      '',
+                                      status['name']),
+                        host_name=status['name'],
+                        gps=(location['latitude'], location['longitude']),
+                        battery=status['batteryLevel']*100,
+                        gps_accuracy=location['horizontalAccuracy']
+                    )
+                else:
+                    # No location found for the device so continue
+                    continue
+        except PyiCloudNoDevicesException:
+            _LOGGER.info('No iCloud Devices found!')
+
+    track_utc_time_change(
+        hass,
+        update_icloud,
+        second=range(0, 60, SCAN_INTERVAL)
+    )
diff --git a/requirements_all.txt b/requirements_all.txt
index 0712569561a01ef77040a0ea8c3fe89ebb6bdc61..c9835294a20eb0fc26a90877c33c8630ca0f577c 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -177,3 +177,6 @@ https://github.com/persandstrom/python-verisure/archive/9873c4527f01b1ba1f72ae60
 
 # homeassistant.components.zwave
 pydispatcher==2.0.5
+
+# homeassistant.sensor.icloud
+https://github.com/picklepete/pyicloud/archive/80f6cd6decc950514b8dc43b30c5bded81b34d5f.zip#pyicloud==0.8.0