diff --git a/README.md b/README.md
index f02ee1bb4c4647e5375d90cf42449d941656f599..94cebcedc3f75effd7b9934915a1d830b14c7272 100644
--- a/README.md
+++ b/README.md
@@ -115,6 +115,7 @@ $ docker-machine create \
 - `--hetzner-ssh-port`: Change the default SSH-Port
 - `--hetzner-primary-ipv4/6`: Sets an existing primary IP (v4 or v6 respectively) for the server, as documented in [Networking](#networking)
 - `--hetzner-wait-on-error`: Amount of seconds to wait on server creation failure (0/no wait by default)
+- `--hetzner-wait-on-polling`: Amount of seconds to wait between requests when waiting for some state to change. (Default: 1 second)
 
 #### Image selection
 
diff --git a/driver/driver.go b/driver/driver.go
index 9a074b493d7480c7bf9f5f2912a44f0193e3a624..8ff0e97403f13ebfa2834e3582520ce0e31cca87 100644
--- a/driver/driver.go
+++ b/driver/driver.go
@@ -56,6 +56,7 @@ type Driver struct {
 	cachedAdditionalKeys []*hcloud.SSHKey
 
 	WaitOnError int
+	WaitOnPolling int
 
 	// internal housekeeping
 	version string
@@ -97,8 +98,10 @@ const (
 	defaultSSHPort = 22
 	defaultSSHUser = "root"
 
-	flagWaitOnError    = "hetzner-wait-on-error"
-	defaultWaitOnError = 0
+	flagWaitOnError      = "hetzner-wait-on-error"
+	defaultWaitOnError   = 0
+	flagWaitOnPolling    = "hetzner-wait-on-polling"
+	defaultWaitOnPolling = 1
 
 	legacyFlagUserDataFromFile = "hetzner-user-data-from-file"
 	legacyFlagDisablePublic4   = "hetzner-disable-public-4"
@@ -298,6 +301,12 @@ func (d *Driver) GetCreateFlags() []mcnflag.Flag {
 			Usage:  "Wait if an error happens while creating the server",
 			Value:  defaultWaitOnError,
 		},
+		mcnflag.IntFlag{
+			EnvVar: "HETZNER_WAIT_ON_POLLING",
+			Name:   flagWaitOnPolling,
+			Usage:  "Period for waiting between requests when waiting for some state to change",
+			Value:  defaultWaitOnPolling,
+		},
 	}
 }
 
@@ -339,6 +348,7 @@ func (d *Driver) setConfigFromFlagsImpl(opts drivers.DriverOptions) error {
 	d.SSHPort = opts.Int(flagSshPort)
 
 	d.WaitOnError = opts.Int(flagWaitOnError)
+	d.WaitOnPolling = opts.Int(flagWaitOnPolling)
 
 	d.placementGroup = opts.String(flagPlacementGroup)
 	if opts.Bool(flagAutoSpread) {
diff --git a/driver/hetzner_query.go b/driver/hetzner_query.go
index 1064574268a67ac724852a0eb2a98f4e8c1ad078..4b2b87b5fea88eb0033ee7df8b50829981816caf 100644
--- a/driver/hetzner_query.go
+++ b/driver/hetzner_query.go
@@ -144,7 +144,7 @@ func (d *Driver) waitForAction(a *hcloud.Action) error {
 			return act.Error()
 		}
 
-		time.Sleep(1 * time.Second)
+		time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
 	}
 	return nil
 }
diff --git a/driver/networking.go b/driver/networking.go
index 41777b8716f77df261ba6188b911255d512ac051..acc4e066ec6b550257a9f84dc5cae23156df62a4 100644
--- a/driver/networking.go
+++ b/driver/networking.go
@@ -93,7 +93,7 @@ func (d *Driver) configureNetworkAccess(srv hcloud.ServerCreateResult) error {
 				d.IPAddress = server.PrivateNet[0].IP.String()
 				break
 			}
-			time.Sleep(1 * time.Second)
+			time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
 		}
 	} else if d.DisablePublic4 {
 		log.Infof("Using public IPv6 network ...")
diff --git a/driver/setup.go b/driver/setup.go
index f66e2c2c2f4adea881dcf9fab371f51734e4e21a..24362e4980111c70daed4ffda55e0374c3861811 100644
--- a/driver/setup.go
+++ b/driver/setup.go
@@ -20,7 +20,7 @@ func (d *Driver) waitForRunningServer() error {
 			break
 		}
 
-		time.Sleep(1 * time.Second)
+		time.Sleep(time.Duration(d.WaitOnPolling) * time.Second)
 	}
 	return nil
 }